PostgreSQL参数allow_system_table_mods

allow_system_table_mods 参数表示允许对 PostgreSQL 数据库系统表的表结构进行修改,该操作有风险,仅超级用户可以执行,谨慎使用此设置,否则可能会导致无法恢复的数据丢失或严重损坏数据库系统,导致数据库不可用。

  • 参数类型:boolean
  • 默认值:false
  • 可选参数:true/on,false/off
  • 可动态修改参数值
  • 仅超级用户有权限修改该参数

示例:

当 allow_system_table_mods 参数为 false 时,给系统表 pg_namespace 增加字段报错,参数设置为 true 之后,就可以为系统表 pg_namespace 增加字段 age,如下所示:

postgres=# alter table pg_namespace add column age int;
ERROR:  permission denied: "pg_namespace" is a system catalog
postgres=# set allow_system_table_mods=true;
SET
postgres=# alter table pg_namespace add column age int;
ALTER TABLE

非 super 用户不能修改 allow_system_table_mods 参数值,如下:

postgres=> set allow_system_table_mods=true;
ERROR:  permission denied to set parameter "allow_system_table_mods"

文章评论

0条评论