Manual:Page restrictions table

The page_restrictions table is used to store page protection 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 protected_titles table.

This table was introduced in MediaWiki 1.10 (–), and overrides the page_restrictions field in the page 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 page_id, 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.

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 Ipblocks table. Rows that contain a null value in this column are considered to be protected indefinitely.

Schema summary
DESCRIBE page_restrictions; ++--+--+-+-++ ++--+--+-+-++ ++--+--+-+-++
 * Field     | Type             | Null | Key | Default | Extra          |
 * pr_id     | int(10) unsigned | NO   | UNI | NULL    | AUTO_INCREMENT |
 * 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    |                |

DESCRIBE page_restrictions; ++--+--+-+-++ ++--+--+-+-++ ++--+--+-+-++
 * 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 |

DESCRIBE page_restrictions; ++--+--+-+-++ ++--+--+-+-++ ++--+--+-+-++
 * 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 |