Postgresql 中文操作指南
Synopsis
SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { value | 'value' | LOCAL | DEFAULT }
Description
SET 命令更改运行时配置参数。 Chapter 20 中列出的许多运行时参数都可以使用 SET 即时更改。(有些参数只能由超级用户和在该参数上已授予 SET 权限的用户更改。服务器或会话启动后也不能更改的另有一些参数。) SET 仅影响当前会话所用的值。
如果 SET (或等效的 SET SESSION )是在稍后中止的事务中发出的,那么 SET 命令的效果将在事务回滚时消失。一旦围绕事务提交,除非由另一个 SET 覆盖,否则这些效果将持续到会话结束。
SET LOCAL 的效果仅持续到当前事务结束,无论事务是否已提交。一个特例是单个事务中 SET 后面跟 SET LOCAL : SET LOCAL 的值将在事务结束前可见,但此后(如果已提交事务), SET 值会生效。
SET 或 SET LOCAL 的效果也通过回滚到早于命令的保存点而取消。
如果 SET LOCAL 用于对同一变量具有 SET 选项的函数中(请参阅 CREATE FUNCTION ),那么 SET LOCAL 命令的效果将在函数退出时消失;也就是说,无论如何都会还原调用函数时有效的值。这允许 SET LOCAL 用于函数中参数的动态或重复更改,同时仍然可以使用 SET 选项保存和还原调用方的值。但是,一个常规 SET 命令会覆盖任何周围函数的 SET 选项;它的效果将持续有效,除非回滚。
Parameters
-
SESSION
-
指定该命令对当前会话生效。(如果既不出现 SESSION 也不出现 LOCAL ,则这是默认值。)
-
-
LOCAL
-
指定该命令仅对当前事务生效。在 COMMIT 或 ROLLBACK 后,会话级别设置将再次生效。在事务块外发出此项会发出一个警告,否则不会产生其他效果。
-
-
configuration_parameter
-
可设置的运行时参数的名称。可用的参数在 Chapter 20 和以下部分中进行说明。
-
-
value
-
参数的新值。值可以指定为字符串常量、标识符、数字或这些值的逗号分隔列表,视具体参数而定。可以写 DEFAULT 以指定将参数重置为其默认值(也就是说,无论在当前会话中是否已执行 SET ,它都会具有的值)。
-
除了在 Chapter 20 中记录的配置参数之外,还有一些参数只能使用 SET 命令调整或具有特殊语法:
-
SCHEMA
-
SET SCHEMA '_value '是 _SET search_path TO _value_ 的别名。使用此语法只能指定一个模式。
-
-
NAMES
-
SET NAMES _value _ is an alias for _SET client_encoding TO _value 。
-
-
SEED
-
设置随机数生成器的内部种子(函数 random )。允许的值是介于 -1 和 1 之间的浮点数(包括端点)。
-
还可以通过调用函数 setseed 来设置种子:
-
SELECT setseed(value);
-
TIME ZONE
-
SET TIME ZONE '_value '是 _SET timezone TO '_value '的别名 . The syntax _SET TIME ZONE 允许时区规范有特殊语法。以下是一些有效值的示例:
-
作为数字或间隔给出的时区设置会在内部转换为 POSIX 时区语法。例如,在 SET TIME ZONE -7 之后, SHOW TIME ZONE 会报告 ←07>+07 。
-
SET 不支持时区缩写。如需了解有关时区的详细信息,请参阅 Section 8.5.3 。
-
-
'PST8PDT'
-
伯克利加州时区。
-
-
'Europe/Rome'
-
意大利时区。
-
-
-7
-
从 UTC 以西 7 小时的时区(相当于 PDT)。UTC 以东为正值。
-
-
INTERVAL '-08:00' HOUR TO MINUTE
-
从 UTC 以西 8 小时的时区(相当于 PST)。
-
-
LOCAL__DEFAULT
-
将时区设置为您的本地时区(即 timezone 的服务器默认值)。
-
Notes
函数 set_config 提供同等的功能;请参见 Section 9.27.1 。此外,可以 UPDATE pg_settings 系统视图来执行相当于 SET 的操作。
Examples
设置模式搜索路径:
SET search_path TO my_schema, public;
将日期样式设置为 POSTGRES traditional,输入惯例为“日在前,月在后”:
SET datestyle TO postgres, dmy;
设置加州伯克利时区:
SET TIME ZONE 'PST8PDT';
设置意大利时区:
SET TIME ZONE 'Europe/Rome';