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