PostgreSQL 8.2.3 中文文档
后退快退快进前进

SET

名称

SET -- 修改运行时参数

语法

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

描述

SET 命令修改运行时配置参数。许多在章17里面列出的运行时参数可以用 SET 在运行时设置。但是有些要求使用超级用户权限来修改,而其它有些则在服务器或者会话开始之后不能修改。请注意 SET 只影响当前会话使用的数值。

如果 SETSET SESSION 是在一个稍后退出的事务里发出的,那么 SET 命令的效果将在事务回滚之后消失。一旦包围它的事务提交,那么其效果将持续到事务的结束,除非被另外一个 SET 覆盖。

不管是否提交,SET LOCAL 的效果只持续到当前事务结束。一个特例是在一个事务里面的 SET 后面跟着一个 SET LOCAL :在事务结束之前只能看到 SET LOCAL 的数值,但是之后(如果事务提交),则是 SET 的值生效。

参数

SESSION

声明这个命令只对当前会话起作用。如果 SESSIONLOCAL 都没出现,那么这个是缺省。

LOCAL

声明该命令只在当前事务中有效。在 COMMITROLLBACK 之后,会话级别的设置将再次生效。请注意如果在 BEGIN 块之外运行,那么 SET LOCAL 将表现出没有作用,因为事务将立即结束。

configuration_parameter

可设置的运行时参数的名字。可用的参数在章17和下面有文档。

value

参数的新值。值可以声明为字符串常量、标识符、数字,或者逗号分隔的上面这些东西的列表。DEFAULT 可以用于把这些参数设置为它们的缺省值。

除了在章17里面有文档记载的配置参数之外,还有几个只能用 SET 命令设置,或者是有特殊的语法的参数。

NAMES

SET NAMES valueSET client_encoding TO value 的别名。

SEED

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

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

SELECT setseed(value);
TIME ZONE

SET TIME ZONE valueSET timezone TO value 的一个别名。语法 SET TIME ZONE 允许为时区设置特殊的语法。下面是有效值的例子:

'PST8PDT'

加州伯克利的时区

'Europe/Rome'

意大利时区

-7

UTC 以西 7 小时的时区(等效于 PDT)

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

后退首页前进
SELECT INTO上一级SET CONSTRAINTS