#

SET — 更改运行时参数

# 概要

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

# 描述

命令更改运行时配置参数。中列出的许多运行时参数第 20 章可以即时更改.(但有些需要超级用户权限才能更改,有些在服务器或会话启动后无法更改。)只影响当前会话使用的值。

如果(或等效地设置会话) 在后来中止的交易中发行,当事务回滚时命令消失。一旦提交了周围的事务,效果将持续到会话结束,除非被另一个事务覆盖.

的影响设置本地仅持续到当前事务结束,无论是否已提交。一个特殊情况是其次是设置本地在单笔交易中:设置本地直到事务结束才会看到值,但之后(如果事务已提交)值将生效。

的影响或者设置本地也可以通过回滚到早于命令的保存点来取消。

如果设置本地在具有相同变量的选项(参见创建函数), 的影响设置本地命令在函数退出时消失;也就是说,无论如何都会恢复调用函数时的有效值。这允许设置本地用于函数内参数的动态或重复变化,同时仍具有使用的便利性保存和恢复调用者值的选项。然而,一个常规的命令覆盖任何周围的功能选项;除非回滚,否则其影响将持续存在。

# 笔记

在 PostgreSQL 版本 8.0 到 8.2 中,设置本地将通过释放较早的保存点或成功退出 PL/pgSQL 异常块来取消。此行为已更改,因为它被认为不直观。

# 参数

会议

指定命令对当前会话生效。(如果两者都没有,这是默认值会议也不当地的出现。)

当地的

指定该命令仅对当前事务生效。后犯罪要么回滚,会话级设置再次生效。在事务块之外发出这个会发出警告,否则无效。

配置参数

可设置的运行时参数的名称。可用参数记录在第 20 章及以下。

价值

参数的新值。值可以指定为字符串常量、标识符、数字或这些的逗号分隔列表,视特定参数而定。默认可以编写以指定将参数重置为其默认值(即,如果没有,它将具有的任何值已在当前会话中执行)。

除了记录在第 20 章, 有一些只能使用命令或具有特殊语法的:

架构

设置架构'*价值*'是一个别名将搜索路径设置为 *价值*.使用此语法只能指定一个模式。

名称

设置名称 *价值*是一个别名将 client_encoding 设置为 *价值*.

种子

设置随机数生成器的内部种子(函数随机的)。允许的值是介于 -1 和 1 之间的浮点数,然后乘以 231-1.

种子也可以通过调用函数来设置种子

SELECT setseed(value);

时区

设置时区 *价值*是一个别名将时区设置为 *价值*.语法设置时区允许时区规范的特殊语法。以下是有效值的示例:

'PST8PDT'

加利福尼亚州伯克利的时区。

“欧洲/罗马”

意大利的时区。

-7

UTC 以西 7 小时的时区(相当于 PDT)。正值位于 UTC 以东。

间隔“-08:00”小时到分钟

UTC 以西 8 小时的时区(相当于 PST)。

当地的
默认

将时区设置为您的本地时区(即服务器的默认值时区)。

以数字或间隔给出的时区设置在内部转换为 POSIX 时区语法。例如,之后设置时区 -7,显示时区会报告<-07>+07.

第 8.5.3 节有关时区的更多信息。

# 笔记

功能设置配置提供等效功能;看第 9.27.1 节.此外,可以更新pg_settings系统视图执行相当于.

# 例子

设置模式搜索路径:

SET search_path TO my_schema, public;

使用“day before month”输入约定将日期样式设置为传统 POSTGRES:

SET datestyle TO postgres, dmy;

设置加州伯克利的时区:

SET TIME ZONE 'PST8PDT';

设置意大利的时区:

SET TIME ZONE 'Europe/Rome';

# 兼容性

设置时区扩展 SQL 标准中定义的语法。该标准仅允许数字时区偏移量,而 PostgreSQL 允许更灵活的时区规范。所有其他features 是 PostgreSQL 扩展。

# 也可以看看

重启,显示