W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
SET — 更改一個運行時參數(shù)
SET [ SESSION | LOCAL ] configuration_parameter
{ TO | = } { value
| 'value
' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { timezone
| LOCAL | DEFAULT }
SET
命令更改運行時配置參數(shù)。很多 第 19 章中列出的參數(shù)可以用 SET
即時更改(但是有些需要超級用戶 特權(quán)才能更改,并且還有一些在服務(wù)器或者會話啟動之后不能被更改)。 SET
只影響當前會話所使用的值。
如果在一個事務(wù)內(nèi)發(fā)出SET
(或者等效的SET SESSION
)而該事務(wù)后來 中止,在該事務(wù)被回滾時SET
命令的效果會 消失。一旦所在的事務(wù)被提交,這些效果將會持續(xù)到會話結(jié)束(除非被另 一個SET
所覆蓋)。
SET LOCAL
的效果只持續(xù)到當前事務(wù)結(jié)束, 不管事務(wù)是否被提交。一種特殊情況是在一個事務(wù)內(nèi) SET
后面跟著 SET LOCAL
: SET LOCAL
值將會在該事務(wù)結(jié)束前一直可見, 但是之后(如果該事務(wù)被提交)SET
值將會生效。
SET
或SET LOCAL
的效果也會因為回滾到早于它們的保存點而消失。
如果在一個函數(shù)內(nèi)使用SET LOCAL
并且該函數(shù) 還有對同一變量的SET
選項(見 CREATE FUNCTION),在函數(shù)退出時 SET LOCAL
命令的效果會消失。也就是說,該
函數(shù)被調(diào)用時的值會被恢復。這允許用 SET LOCAL
在函數(shù)內(nèi)動態(tài)地或者重復地更改 一個參數(shù),同時仍然能便利地使用SET
選項來保存以及恢復調(diào)用 者的值。不過,一個常規(guī)的SET
命令會覆蓋它所在的任何函 數(shù)的SET
選項,除非回滾,它的效果將一直保持。
在PostgreSQL 版本 8.0 到 8.2 中, 一個SET LOCAL
的效果會因為釋放較早的 保存點或者成功地從一個PL/pgSQL異常塊 中退出而被取消。這種行為已經(jīng)被更改,因為它被認為不直觀。
SESSION
指定該命令對當前會話有效(這是默認值)。
LOCAL
指定該命令只對當前事務(wù)有效。在COMMIT
或者 ROLLBACK
之后,會話級別的設(shè)置會再次生效。 在事務(wù)塊外部發(fā)出這個參數(shù)會發(fā)出一個警告并且不會有效果。
configuration_parameter
一個可設(shè)置運行時參數(shù)的名稱??捎玫膮?shù)被記錄在 第 19 章和下文中。
value
參數(shù)的新值。根據(jù)特定的參數(shù),值可以被指定為字符串常量、標識符、 數(shù)字或者以上構(gòu)成的逗號分隔列表。寫DEFAULT
可以指定把該參數(shù)重置成它的默認值(也就是說在當前會話中還沒有 執(zhí)行SET
命令時它具有的值)。
除了在第 19 章中記錄的配置參數(shù), 還有一些參數(shù)只能用SET
命令設(shè)置 或者具有特殊的語法:
SCHEMA
SET SCHEMA '
是 value
'SET search_path TO
的一個別名。 使用這種語法只能指定一個模式。value
NAMES
SET NAMES
是 value
SET client_encoding TO
的一個別名。value
SEED
為隨機數(shù)生成器(函數(shù)random
)設(shè)置 一個內(nèi)部種子。允許的值是 -1 和 1 之間的浮點數(shù),它會被乘上 231-1。
也可以通過調(diào)用函數(shù)setseed
來設(shè)置種子:
SELECT setseed(value
);
TIME ZONE
SET TIME ZONE
是 value
SET timezone TO
的一個別 名。語法value
SET TIME ZONE
允許用于時區(qū)指定的特 殊語法。這里是合法值的例子:
'PST8PDT'
加州伯克利的時區(qū)。
'Europe/Rome'
意大利的時區(qū)。
-7
UTC 以西 7 小時的時區(qū)(等效于 PDT)。正值則是 UTC 以東。
INTERVAL '-08:00' HOUR TO MINUTE
UTC 以西 8 小時的時區(qū)(等效于 PST)。
LOCAL
DEFAULT
把時區(qū)設(shè)置為你的本地時區(qū)(也就是說服務(wù)器的timezone
默認值)。
以數(shù)字或區(qū)間給出的時區(qū)設(shè)置在內(nèi)部被翻譯成 POSIX 時區(qū)語法。 例如,在SET TIME ZONE -7
之后, SHOW TIME ZONE
將會報告 <-07>+07
。
有關(guān)時區(qū)的更多信息可見第 8.5.3 節(jié)。
函數(shù)set_config
提供了等效的功能,見 第 9.27 節(jié)。此外,可以更新 pg_settings
系統(tǒng)視圖來執(zhí)行與
SET
等效的工作。
設(shè)置模式搜索路徑:
SET search_path TO my_schema, public;
把日期風格設(shè)置為傳統(tǒng) POSTGRES的 “日在月之前”的輸入習慣:
SET datestyle TO postgres, dmy;
設(shè)置時區(qū)為加州伯克利:
SET TIME ZONE 'PST8PDT';
設(shè)置時區(qū)為意大利:
SET TIME ZONE 'Europe/Rome';
SET TIME ZONE
擴展了 SQL 標準定義的語法。標準 只允許數(shù)字的時區(qū)偏移量而 PostgreSQL允許更靈活的時區(qū)說明。 所有其他SET
特性都是 PostgreSQL擴展。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: