Manual:Page restrictions table/en

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 was reserved to support a future per-user edit restriction system, but was never used as partial blocks were implemented as blocks.

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      |         |               |