Manual:Page restrictions table

The page_restrictions table is used to store page levels in MediaWiki 1.10 and later. The most notable feature is the introduction of cascading page protections for high-visibility pages. This table is for restrictions on existing pages only. Protections of non-existent pages are stored in the table.

This table was introduced in MediaWiki 1.10 ( – ), and overrides the field in the  table.

The list of protected pages can be found at Special:ProtectedPages.

pr_id
This is the primary key for the table, and is used to identify a particular row in the table.

pr_page
This field contains a reference to, which works as the foreign key for this table.

pr_type
The type of protection (whether it applies to edits, page moves, or similar) is stored in this field.

pr_level
This column describes the level of protection for the page; full protection for sysop-only pages, semi-protection for autoconfirmed users, or any other levels.

pr_cascade
This field determines whether cascading protection (meaning that all transcluded templates and images on the page will be protected as well).

pr_user
This field is reserved to support a future per-user edit restriction system. Removed in 1.37.

pr_expiry
This field contains the timestamp for pages whose protection has a set expiration date, and has a format similar to the expiry time in the table. Rows that contain a null value in this column are considered to be protected indefinitely.

Schema summary
++--+--+-+-++ ++--+--+-+-++ ++--+--+-+-++
 * Field     | Type             | Null | Key | Default | Extra          |
 * pr_id     | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
 * pr_page   | int(10) unsigned | NO   | MUL | NULL    |                |
 * pr_type   | varbinary(60)    | NO   | MUL | NULL    |                |
 * pr_level  | varbinary(60)    | NO   | MUL | NULL    |                |
 * pr_cascade | tinyint(4)      | NO   | MUL | NULL    |                |
 * pr_expiry | varbinary(14)    | YES  |     | NULL    |                |

++--+--+-+-++ ++--+--+-+-++ ++--+--+-+-++
 * Field     | Type             | Null | Key | Default | Extra          |
 * pr_id     | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
 * pr_page   | int(11)          | NO   | MUL | NULL    |                |
 * pr_type   | varbinary(60)    | NO   | MUL | NULL    |                |
 * pr_level  | varbinary(60)    | NO   | MUL | NULL    |                |
 * pr_cascade | tinyint(4)      | NO   | MUL | NULL    |                |
 * pr_user   | int(10) unsigned | YES  |     | NULL    |                |
 * pr_expiry | varbinary(14)    | YES  |     | NULL    |                |

++--+--+-+-++ ++--+--+-+-++ ++--+--+-+-++
 * Field     | Type             | Null | Key | Default | Extra          |
 * pr_id     | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
 * pr_page   | int(11)          | NO   | MUL | NULL    |                |
 * pr_type   | varbinary(60)    | NO   | MUL | NULL    |                |
 * pr_level  | varbinary(60)    | NO   | MUL | NULL    |                |
 * pr_cascade | tinyint(4)      | NO   | MUL | NULL    |                |
 * pr_user   | int(11)          | YES  |     | NULL    |                |
 * pr_expiry | varbinary(14)    | YES  |     | NULL    |                |

++--+--+-+-++ ++--+--+-+-++ ++--+--+-+-++
 * Field     | Type             | Null | Key | Default | Extra          |
 * pr_page   | int(8)           | NO   | MUL | NULL    |                |
 * pr_type   | varbinary(60)    | NO   | MUL | NULL    |                |
 * pr_level  | varbinary(60)    | NO   | MUL | NULL    |                |
 * pr_cascade | tinyint(4)      | NO   | MUL | NULL    |                |
 * pr_user   | int(8)           | YES  |     | NULL    |                |
 * pr_expiry | varbinary(14)    | YES  |     | NULL    |                |
 * pr_id     | int(10) unsigned | NO   | PRI | NULL    | AUTO_INCREMENT |

++--+--+-+-++ ++--+--+-+-++ ++--+--+-+-++
 * Field     | Type             | Null | Key | Default | Extra          |
 * pr_page   | int(8)           | NO   | PRI | NULL    |                |
 * pr_type   | varbinary(60)    | NO   | PRI | NULL    |                |
 * pr_level  | varbinary(60)    | NO   | MUL | NULL    |                |
 * pr_cascade | tinyint(4)      | NO   | MUL | NULL    |                |
 * pr_user   | int(8)           | YES  |     | NULL    |                |
 * pr_expiry | varbinary(14)    | YES  |     | NULL    |                |
 * pr_id     | int(10) unsigned | NO   | UNI | NULL    | AUTO_INCREMENT |

Indexes
 +---++--+--+-+---+-+--++--++-+---+ +---++--+--+-+---+-+--++--++-+---+ +---++--+--+-+---+-+--++--++-+---+
 * Table            | Non_unique | Key_name     | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
 * page_restrictions |         0 | PRIMARY      |            1 | pr_id       | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page_restrictions |         0 | pr_pagetype  |            1 | pr_page     | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page_restrictions |         0 | pr_pagetype  |            2 | pr_type     | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page_restrictions |         1 | pr_typelevel |            1 | pr_type     | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page_restrictions |         1 | pr_typelevel |            2 | pr_level    | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page_restrictions |         1 | pr_level     |            1 | pr_level    | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
 * page_restrictions |         1 | pr_cascade   |            1 | pr_cascade  | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |