Manpages

NAME

SET - 改 变 运 行 时 参 数

SYNOPSIS

SET [ SESSION | LOCAL ] name { TO | = } { value | ’value’ | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }

DESCRIPTION 描 述

SET 命 令 修 改 运 行 时 配 置 参 数 。 许 多 在 Section 16.4 ’’Run-time Configuration’’ 里 面 列 出 的 运 行 时 参 数 可 以 用 SET 在 运 行 时 设 置 。 ( 但 是 有 些 要 求 使 用 超 级 用 户 权 限 来 修 改 , 而 其 它 有 些 则 在 服 务 器 或 者 会 话 开 始 之 后 不 能 修 改 。 ) 请 注 意 SET 只 影 响 当 前 会 话 使 用 的 数 值 。 如 果 SET 或 者 SET SESSION 是 在 一 个 稍 后 退 出 的 事 务 里 发 出 的 , 那 么 SET 命 令 的 效 果 将 在 事 务 回 滚 的 之 后 小 时 。 ( 这 个 行 为 和 PostgreSQL版 本 7.3 之 前 的 不 同 , 那 个 时 候 SET 的 效 果 在 后 面 的 错 误 之 后 不 会 回 滚 。 ) 一 旦 包 围 它 的 事 务 提 交 , 那 么 其 效 果 将 持 续 到 事 务 的 结 束 , 除 非 被 另 外 一 个 SET 覆 盖 。

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

PARAMETERS 选 项

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

LOCAL 声 明 该 命 令 只 在 当 前 事 务 中 有 效 。 在

COMMIT 或 者 ROLLBACK 之 后 , 会

话 级 别 的 设 置 将 再 次 生 效 。 请 注 意 如 果 在 BEGIN 块 之 外 运 行 , 那 么 SET LOCAL 将 表 现 出 没 有 作 用 , 因 为 事 务 将 立 即 结 束 。

name 可 设 置 的 运 行 时 参 数 的 名 字 。 可 用 的 参 数 在

Section 16.4 ’’Run-time

Configuration’’ 和 下 面 归 档 。

value 参 数 的 新 值 。 值 可 以 声 明 为 字 串 常 量 , 标 识 符 , 数 字 , 或 者 逗 号 分 隔 的 上 面 这 些 东 西 的 列 表 。

DEFAULT 可 以 用 于 把 这 些 参 数 设 置 为 它 们 的 缺 省 值 。 除 了 在 Section 16.4 ’’Run-time Configuration’’ 里 面 有 文 档 记 载 的 配 置 参 数 之 外 , 还 有 几 个 只 能 用 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 是 for SET timezone TO value 的 一 个 别 名 。 语 法 SET TIME ZONE 允 许 为 时 区 设 置 特 殊 的 语 法 。 下 面 是 有 效 值 的 例 子 :
’PST8PDT’
加 州 伯 克 利 的 时 区 。
’Portugal’
葡 萄 牙 时 区 。
’Europe/Rome’
意 大 利 时 区 。

-7

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

INTERVAL ’-08:00’ HOUR TO MINUTE

UTC 以 西 8 小 时 的 时 区 ( 等 效 于 PST) 。

LOCAL

DEFAULT 将 时 区 设 置 为 你 的 本 地 时 区 ( 服 务 器 的 操 作 系 统 缺 省 的 那 个 ) 。 参 阅 Section 8.5 ’’Date/Time Types’’ 获 取 有 关 时 区 的 更 多 细 节 。

NOTES 注 意

函 数 set_config 提 供 了 等 效 的 功 能 。 参 阅 Section 9.13 ’’Miscellaneous Functions’’ 。

EXAMPLES 例 子

设 置 模 式 搜 索 路 径 :

SET search_path TO my_schema, public; 把 日 期 时 间 风 格 设 置 为 传 统 的 POSTGRES 风 格 , with ’’day before month’’ input convention:

SET datestyle TO postgres, dmy; 把 时 区 设 置 为 加 州 伯 克 力 , 使 用 双 引 号 保 存 时 区 声 明 里 大 写 字 符 的 属 性 ( 注 意 这 里 的 日 期 /时 间 格 式 是 PostgreSQL) :

SET TIME ZONE ’PST8PDT’;
SELECT current_timestamp AS today;

today
-------------------------------
2003-04-29 15:02:01.218622-07

COMPATIBILITY 兼 容 性

SET TIME ZONE 扩 展 了 在 SQL 标 准 里 定 义 的 语 法 。 标 准 只 允 许 有 一 个 数 字 时 区 偏 移 , 而 PostgreSQL 还 允 许 完 整 更 灵 活 的 时 区 声 明 。 所 有 其 它 的 SET 特 性 都 是 PostgreSQL 扩 展 。

SEE ALSO 参 见

RESET [reset(7)], SHOW [show(l)]

译 者

Postgresql 中 文 网 站 何 伟 平 <laser [AT] pgsqldb.org>

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh