Note

SET

SET —更改运行时参数

Synopsis

SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }

Description

SET命令更改运行时配置参数。 Chapter 19中列出的许多运行时参数都可以使用SET即时更改。 (但是有些需要更改超级用户权限,而另一些则不能在服务器或会话启动后更改.)SET仅影响当前会话使用的值。

如果在稍后中止的事务中发出了SET(或等效的SET SESSION),则回滚该事务时SET命令的作用会消失。一旦提交了周围的事务,效果将一直持续到会话结束,除非被另一个SET覆盖。

SET LOCAL的效果仅持续到当前事务结束,无论是否提交。特殊情况是在单个事务中SET后跟SET LOCAL:将看到SET LOCAL值直到事务结束,但是此后(如果提交了事务)SET值将生效。

通过回滚到早于该命令的保存点,也可以取消SETSET LOCAL的效果。

如果在具有SET选项的同一变量的函数中使用SET LOCAL(请参见CREATE FUNCTION),则SET LOCAL命令的效果在函数 Export 处消失;也就是说,无论如何都将恢复调用该函数时有效的值。这使SET LOCAL可以用于函数中参数的动态或重复更改,同时仍具有使用SET选项保存和恢复调用者值的便利。但是,常规的SET命令会覆盖所有周围函数的SET选项;除非回滚,否则其影响将持续。

Note

在 PostgreSQL 8.0 到 8.2 版本中,通过释放更早的保存点或成功退出 PL/pgSQL 异常块可以消除SET LOCAL的影响。此行为已更改,因为它被认为是不直观的。

Parameters

除了Chapter 19中记录的配置参数外,还有一些只能使用SET命令进行调整或具有特殊语法的参数:

种子也可以通过调用setseed来设置:

SELECT setseed(value);

以数字或间隔指定的时区设置在内部转换为 POSIX 时区语法。例如,在SET TIME ZONE -7之后,SHOW TIME ZONE将报告<-07>+07

有关时区的更多信息,请参见Section 8.5.3

Notes

函数set_config提供等效的功能;参见Section 9.26。同样,可以更新pg_settings系统视图以执行SET的等效功能。

Examples

设置架构搜索路径:

SET search_path TO my_schema, public;

使用“约定日期前”Importing 约定将日期样式设置为传统的 POSTGRES:

SET datestyle TO postgres, dmy;

设置加利福尼亚 State 伯克利的时区:

SET TIME ZONE 'PST8PDT';

设置意大利的时区:

SET TIME ZONE 'Europe/Rome';

Compatibility

SET TIME ZONE扩展了 SQL 标准中定义的语法。该标准仅允许数字时区偏移,而 PostgreSQL 允许更灵活的时区规范。所有其他SET功能都是 PostgreSQL 扩展。

See Also

RESET, SHOW

上一章 首页 下一章