SET(7)

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@pgsqldb.org>

跋
本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃：https://github.com/man-pages-zh/manpages-zh