# 放
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 扩展。