SET

Name

SET -- 改變執行時參數

Synopsis

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

描述

SET 命令修改執行時配置參數。許多在 Section 16.4 裡面列出的執行時參數可以用 SET 在執行時設置。 (但是有些要求使用超級用戶權限來修改,而其它有些則在伺服器或者會話 開始之後不能修改。)請注意 SET 只影響目前會話使用的數值。

如果 SET 或者 SET SESSION 是在一個稍後退出的交易裡發出的, 那麼 SET 命令的效果將在交易回滾的之後小時。 (這個行為和PostgreSQL版本 7.3 之前的不同, 那個時候 SET 的效果在後面的錯誤之後不會回滾。) 一旦包圍它的交易提交,那麼其效果將持續到交易的結束,除非被另外一個 SET 覆蓋。

SET LOCAL 的效果只持續到目前交易結束,不管是否提交。 一個特例是在一個交易裡面的 SET 後面跟著一個 SET LOCAL:在交易結束之前只能看到 SET LOCAL 的數值,但是之後(如果交易提交),則是 SET 的值生效。

輸入

variable

可設置的全局變量。

value

參數的新值。DEFAULT 可以用於聲明把參數恢復為預設值。允許使用字串數組, 但是更複雜的結構需要用單引號或者雙引號引起來.

參數

SESSION

聲明這個命令只對目前會話起作用。 (如果 SESSIONLOCAL 都沒出現,那麼這個是預設。)

LOCAL

聲明該命令只在目前交易中有效。在 COMMIT 或者 ROLLBACK 之後,會話級別的設置將再次生效。 請注意如果在 BEGIN 塊之外執行,那麼 SET LOCAL 將資料表現出沒有作用,因為交易將立即結束。

variable

可設置的執行時參數的名字。可用的參數在 Section 16.4 和下面歸檔。

value

參數的新值。值可以聲明為字串常量,標識符,數字,或者逗號分隔的上面這些東西的列資料表。 DEFAULT 可以用於把這些參數設置為它們的預設值。

除了在 Section 16.4 裡面有文件記載的配置參數之外, 還有幾個只能用 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

將時區設置為您的本地時區(伺服器的操作系統預設的那個)。

參閱 Section 8.5 獲取有關時區的更多細節。 還有,Appendix B 裡有一個可以識別的時區列資料表。

注意

函數 set_config 提供了等效的功能。 參閱 Section 9.20

例子

設置模式搜索路徑:

SET search_path TO my_schema, public;

把日期時間風格設置為傳統的 POSTGRES 風格,同時還有Europen(歐洲)風格:

SET DATESTYLE TO postgres,European;

把時區設置為加州伯克力。

 
SET TIME ZONE 'PST8PDT';

為意大利設置時區:

SET TIME ZONE 'Europe/Rome';

相容性

SET TIME ZONE 擴展了在 SQL 標準裡定義的語法。 標準只允許有一個數字時區偏移, 而 PostgreSQL 還允許完整更靈活的時區聲明。 所有其它的 SET 特性都是 PostgreSQL 擴展。

又見

RESET, SHOW