ALTER SYSTEM

修改PostgreSQL配置的SQL命令

ALTER SYSTEM 是一个实用程序命令,用于在数据库会话中修改PostgreSQL配置。

ALTER SYSTEMPostgreSQL 9.4 中添加。

注意事项

ALTER SYSTEM 只能由超级用户执行。无法授予非超级用户执行 ALTER SYSTEM 的权限;但是,从 PostgreSQL 15 开始,可以将修改单个 配置参数 的权限授予非超级用户。

ALTER SYSTEM 不会检查修改的 GUC 的有效性;与手动修改 postgresql.conf 一样,将在重新加载配置时检查设置。

如果使用 ALTER SYSTEM配置参数 的值设置为 'DEFAULT'(例如 log_error_verbosity),则必须将该值括在单引号中,否则 ALTER SYSTEM 将将其解释为 ALTER SYSTEM SET ... TO DEFAULT,这会完全从 postgresql.auto.conf 中删除配置参数。

无法将该命令包装在事务或安全定义器函数中。

禁用ALTER SYSTEM

PostgreSQL 17 开始,可以通过 allow_alter_system 配置选项禁用 ALTER SYSTEM 命令的执行。

源代码

ALTER SYSTEMsrc/backend/utils/misc/guc.c 中的 AlterSystemSetConfigFile() 函数处理。

更改历史

示例

ALTER SYSTEM 的基本用法示例

postgres=# SHOW log_statement;
 log_statement 
---------------
 none
(1 row)

postgres=# ALTER SYSTEM SET log_statement = 'all';
ALTER SYSTEM

postgres=# SHOW log_statement;
 log_statement 
---------------
 none
(1 row)

postgres=# SELECT pg_reload_conf();
 pg_reload_conf 
----------------
 t
(1 row)

postgres=# SHOW log_statement;
 log_statement 
---------------
 all
(1 row)

postgresql.auto.conf 将(假设之前未通过 ALTER SYSTEM 修改)如下所示

postgres=# SELECT pg_read_file(setting || '/postgresql.auto.conf')
             FROM pg_settings
            WHERE name = 'data_directory';
                     pg_read_file                      
-------------------------------------------------------
 # Do not edit this file manually!                    +
 # It will be overwritten by the ALTER SYSTEM command.+
 log_statement = 'all'                                +
 
(1 row)

DEFAULT 指定为配置参数的字面值将从 postgresql.auto.conf 中删除它。

postgres=# ALTER SYSTEM SET log_statement = DEFAULT;
ALTER SYSTEM

postgres=# SELECT pg_read_file(setting || '/postgresql.auto.conf')
  FROM pg_settings
 WHERE name = 'data_directory';
                     pg_read_file                      
-------------------------------------------------------
 # Do not edit this file manually!                    +
 # It will be overwritten by the ALTER SYSTEM command.+
 
(1 row)

在下次重新加载配置时,将应用在 postgresql.conf 中其他位置为该参数指定的值,或者如果未设置,则应用该参数的默认设置。

分类

配置SQL命令实用程序命令

另请参阅

postgresql.confpostgresql.auto.confpg_reload_conf()allow_alter_system

反馈

提交任何关于“ALTER SYSTEM”的评论、建议或更正 此处