↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本。 PostgreSQL 8.2 已结束支持。 请参阅 当前版本手册.

SET

SET — 更改运行时参数

大纲

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

描述

SET命令用于更改运行时配置参数。许多在第 17 章中列出的运行时参数都可以通过 SET即时更改。(有些参数需要超级用户权限才能更改,还有一些参数在服务器启动或会话开始之后便无法再更改。)SET只影响当前会话所使用的值。

如果在一个随后被中止的事务中发出SET(或者等效的SET SESSION),那么在事务回滚时,SET命令的效果就会消失。(这一行为与 PostgreSQL 7.3 之前的版本不同,那时 SET的效果不会在出现错误后回滚。)一旦该事务提交,这些效果就会持续到会话结束,除非被另一个SET覆盖。

SET LOCAL的效果只持续到当前事务结束,无论事务是否提交。一种特殊情况是:在同一个事务中先执行 SET,再执行SET LOCAL。这样SET LOCAL设置的值会一直生效到事务结束,但在此之后(如果该事务被提交),SET设置的值将生效。

参数

SESSION

指定该命令对当前会话生效。(如果既没有出现SESSION,也没有出现LOCAL,这就是默认情况。)

LOCAL

指定该命令只对当前事务生效。在COMMIT或 ROLLBACK之后,会话级设置会再次生效。注意,如果在 BEGIN 块之外执行,SET LOCAL 看起来不会有任何效果。

configuration_parameter

可设置的运行时参数名称。可用参数见第 17 章以及下文。

value

参数的新值。根据具体参数的不同,值可以指定为字符串常量、标识符、数字,或由这些构成的逗号分隔列表。可以用DEFAULT 来指定把该参数重置为其默认值。

除了第 17 章中记载的配置参数外,还有几个参数只能通过SET命令调整,或者具有特殊语法:

NAMES

SET NAMES value是 SET client_encoding TO value的别名。

SEED

设置随机数生成器(即函数 random)的内部种子。允许的值是 0 到 1 之间的浮点数,这些值随后会乘以 231-1。

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

SELECT setseed(value);
TIME ZONE

SET TIME ZONE value是以下写法的别名:SET timezone TO value。语法SET TIME ZONE允许使用特殊语法指定时区。下面是一些有效值的示例:

'PST8PDT'

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

'Europe/Rome'

意大利所使用的时区。

-7

比 UTC 向西 7 小时的时区(等同于 PDT)。正值表示位于 UTC 以东。

INTERVAL '-08:00' HOUR TO MINUTE

比 UTC 向西 8 小时的时区(等同于 PST)。

LOCAL
DEFAULT

把时区设置为你的本地时区(即服务器操作系统默认的时区)。

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

注解

函数set_config提供了等效功能。参见第 9.20 节。

示例

设置模式搜索路径:

SET search_path TO my_schema, public;

将日期风格设置为传统POSTGRES风格,并采用“日在月之前”的输入惯例:

SET datestyle TO postgres, dmy;

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

SET TIME ZONE 'PST8PDT';

将时区设置为意大利所使用的时区:

SET TIME ZONE 'Europe/Rome';

兼容性

SET TIME ZONE扩展了 SQL 标准定义的语法。标准只允许使用数值形式的时区偏移量,而PostgreSQL 允许更灵活的时区指定方式。其他所有SET特性都是 PostgreSQL扩展。

另见

RESET, SHOW

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.