国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > PostgreSQL > 正文

PostgreSQL7.0手冊-用戶手冊-19. SQL命令-SET

2019-09-08 23:33:38
字體:
供稿:網(wǎng)友
SET
名稱
SET ― 為會(huì)話設(shè)置運(yùn)行時(shí)參數(shù) 

語法
SET variable { TO | = } { value | 'value' | DEFAULT }
SET CONSTRAINTS {ALL | constraintlist} mode
SET TIME ZONE { 'timezone' | LOCAL | DEFAULT }
SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
  
輸入
variable 
可設(shè)置的全局變量. 
value 
參數(shù)的新值.DEFAULT 可以用于聲明把參數(shù)恢復(fù)為缺省值.允許使用字串?dāng)?shù)組,但是更復(fù)雜的結(jié)構(gòu)需要用單引號或者雙引號引起來. 
可能的變量和許可的值是. 
  
CLIENT_ENCODING | NAMES 
設(shè)置多字節(jié)客戶端編碼。參數(shù)是: 
value 
  
把客戶端多字節(jié)編碼設(shè)為 value。聲明的編碼方式必須為后端支持。 
 
這個(gè)特性只有在對制作 Postgres 的配置階段聲明了 MULTIBYTE 支持后才生效。 
  
DATESTYLE 
設(shè)置日期/時(shí)間表示風(fēng)格。影響輸出格式,并且在某些時(shí)候會(huì)影響輸入的解釋。 
  
ISO 
使用 ISO 8601-風(fēng)格的日期和時(shí)間 
SQL 
使用 Oracle/Ingres-風(fēng)格的日期和時(shí)間 
Postgres 
使用傳統(tǒng) Postgres 格式 
European 
使用 dd/mm/yyyy 作為數(shù)字日期表達(dá)式. 
NonEuropean 
使用 mm/dd/yyyy 作為數(shù)字日期表達(dá)式. 
German 
使用 dd.mm.yyyy 作為數(shù)字日期表達(dá)式. 
US 
與 'NonEuropean'一樣 
DEFAULT 
  
恢復(fù)缺省值 (ISO) 
日期格式初始化可以用下面方法初始化: 
   
 設(shè)置 PGDATESTYLE 環(huán)境變量.如果一個(gè)基于 libpq 的客戶端的環(huán)境里設(shè)置了 PGDATESTYLE,libpq 將在聯(lián)接啟動(dòng)時(shí)自動(dòng)把 DATESTYLE 設(shè)置成為 PGDATESTYLE 的值。 
用 -o -e 參數(shù)運(yùn)行 postmaster 可以把日期設(shè)置成 European 習(xí)慣.要注意的是這個(gè)只是對一些日期風(fēng)格的組合有影響;例如 ISO 風(fēng)格不被這個(gè)參數(shù)影響. 
改變 src/backend/utils/init/globals.c里的變量. 

在 globals.c 里可以更改的變量是: 
   
 bool EuroDates = false | true  
int DateStyle = USE_ISO_DATES | USE_POSTGRES_DATES | USE_SQL_DATES | USE_GERMAN_DATES  


SEED 
為隨機(jī)數(shù)生成器設(shè)置內(nèi)部種子. 
value 
種子的值被隨機(jī)范圍函數(shù)使用.典型的值是介于0 和 1之間的浮點(diǎn)數(shù),這個(gè)數(shù)隨后乘以 RAND_MAX.如果使用了超出范圍的數(shù)值,生成的積隱含地溢出. 
種子還可以通過調(diào)用 setseed SQL 函數(shù)設(shè)置: 

SELECT setseed(value);
這個(gè)特性只有在對制作 Postgres 的配置階段聲明了 MULTIBYTE 支持后才生效。 
  
SERVER_ENCODING 
  
設(shè)置多字節(jié)服務(wù)器端編碼方式為: 
value 
這個(gè)值標(biāo)識服務(wù)器編碼. 
這個(gè)特性只有在對制作 Postgres 的配置階段聲明了 MULTIBYTE 支持后才生效。 
  
CONSTRAINTS 
  
  
  
  
  
  

SET CONSTRAINTS 影響當(dāng)前事務(wù)約束計(jì)算的表現(xiàn).SET CONSTRAINTS,在 SQL3 里面規(guī)范,有如下允許的參數(shù): 

constraintlist 
  
逗號分隔的可推遲的約束名列表. 
mode 
  
  
  
  
  
  

約束模式.允許值是 DEFERRED 和 IMMEDIATE.

在 IMMEDIATE 模式,外鍵約束在每個(gè)查詢結(jié)束時(shí)檢查. 
在 DEFERRED 模式,標(biāo)記為 DEFERRABLE 的外鍵約束只是在事務(wù)提交時(shí)或者約束的模式被顯式地設(shè)為 IMMEDIATE 時(shí)才檢查.實(shí)際上,這些只對外鍵約束起作用,因此它不應(yīng)用于 UNIQUE 或者其他約束. 

TIME ZONE, TIMEZONE 
  
時(shí)區(qū)的可能值與你的操作系統(tǒng)有關(guān).例如 Linux 的/usr/lib/zoneinfo 里面包含時(shí)區(qū)的數(shù)據(jù)庫. 
  
  
  
  
  
  
  
  

下面是時(shí)區(qū)的一些有效值. 
PST8PDT 
將時(shí)區(qū)設(shè)為 California (加州) 
Portugal 
將時(shí)區(qū)設(shè)為 Portugal (葡萄牙). 
'Europe/Rome' 
將時(shí)區(qū)設(shè)為 Italy (意大利). 
DEFAULT 
將時(shí)區(qū)設(shè)為你的本地時(shí)區(qū)(TZ 環(huán)境變量的值). 
如果聲明了一個(gè)無效時(shí)區(qū),時(shí)區(qū)就會(huì)變成 GMT(在大多數(shù)系統(tǒng)上). 
第二種語法在上面顯示,它允許用戶用一個(gè)類似于 SQL92 SET TIME ZONE 的語法設(shè)置時(shí)區(qū).LOCAL 關(guān)鍵字只是用于 SQL92 兼容的 DEFAULT 可選的關(guān)鍵字. 

如果一個(gè)基于 libpq 的客戶端的環(huán)境里設(shè)置了 PGTZ,libpq 將在聯(lián)接啟動(dòng)時(shí)自動(dòng)把 TIMEZONE 設(shè)置成為 PGTZ 的值。 

TRANSACTION ISOLATION LEVEL 
給當(dāng)前事務(wù)設(shè)置隔離級別。 
READ COMMITTED 
當(dāng)前事務(wù)查詢將只讀取在查詢之前提交的數(shù)據(jù)。READ COMMITTED 是缺省值。 
注意:SQL92 標(biāo)準(zhǔn)要求 SERIALIZABLE 為缺省的隔離級別。
SERIALIZABLE 
當(dāng)前的事務(wù)查詢只能讀取在該事務(wù)里第一個(gè) DML 語句(SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO)執(zhí)行前的數(shù)據(jù)。 
還有幾個(gè)可以 SET 命令聲明的用內(nèi)部的或優(yōu)化的參數(shù): 
PG_OPTIONS 
設(shè)置各種后端參數(shù). 
RANDOM_PAGE_COST 
  
設(shè)置優(yōu)化器對非連續(xù)磁盤頁面讀取的開銷的預(yù)計(jì)值。這是以連續(xù)頁面讀取的開銷的倍數(shù)計(jì)算的。 
  
float8 
 
設(shè)置隨機(jī)頁面訪問的開銷為聲明的浮點(diǎn)值。 
CPU_TUPLE_COST 
設(shè)置優(yōu)化器處理查詢里每條記錄的開銷的預(yù)計(jì)值。這是以連續(xù)頁面讀取的開銷的分?jǐn)?shù)進(jìn)行計(jì)算的。 
  
float8 
 
把每條記錄的 CPU 處理的開銷設(shè)置聲明的浮點(diǎn)值。 
CPU_INDEX_TUPLE_COST 
設(shè)置優(yōu)化器進(jìn)行索引掃描時(shí)處理每條索引記錄的開銷的預(yù)計(jì)值。這是以連續(xù)頁面讀取的開銷的分?jǐn)?shù)進(jìn)行計(jì)算的。 
float8 
把每條索引記錄的 CPU 處理的開銷設(shè)置聲明的浮點(diǎn)值。 
CPU_OPERATOR_COST 
設(shè)置優(yōu)化器處理 WHERE 子句里每個(gè)操作符的開銷的預(yù)計(jì)值。這是以連續(xù)頁面讀取的開銷的分?jǐn)?shù)進(jìn)行計(jì)算的。 
float8 
把每個(gè)操作符的 CPU 處理的開銷設(shè)置聲明的浮點(diǎn)值。 
EFFECTIVE_CACHE_SIZE 
設(shè)置優(yōu)化器對磁盤緩沖有效尺寸的假設(shè)(也就是說,將被 Postgres 數(shù)據(jù)文件使用的內(nèi)核的磁盤緩沖的部分)。這是以磁盤頁面計(jì)量的,通常每塊 8Kb。 
float8 
把每個(gè)操作符的 CPU 處理的開銷設(shè)置聲明的浮點(diǎn)值。 
ENABLE_SEQSCAN 
允許或者禁止規(guī)劃器對順序掃描規(guī)劃類型的使用。(完全禁止順序掃描是不可能的,但是把這個(gè)變量置為 OFF 將導(dǎo)致規(guī)劃器在存在其他可用方法的情況下不采用順序掃描。) 
ON 
允許使用順序掃描(缺省設(shè)置)。 
OFF 
禁止使用順序掃描。 
ENABLE_INDEXSCAN 
允許或者禁止規(guī)劃器對索引掃描規(guī)劃類型的使用。 
ON 
允許使用索引掃描(缺省設(shè)置)。 
OFF 
禁止使用索引掃描。 
ENABLE_TIDSCAN 
允許或者禁止規(guī)劃器對 TID 掃描規(guī)劃類型的使用。 
ON 
允許使用 TID 掃描(缺省設(shè)置)。 
OFF 
禁止使用 TID 掃描。 
ENABLE_SORT 
允許或者禁止規(guī)劃器對顯式排序步驟的使用。(完全禁止顯式排序步驟是不可能的,但是把這個(gè)變量置為 OFF 將導(dǎo)致規(guī)劃器在存在其他可用方法的情況下不采用顯式排序步驟。) 
ON 
允許使用排序(缺省設(shè)置)。 
OFF 
禁止使用排序。 
ENABLE_NESTLOOP 
允許或者禁止規(guī)劃器對嵌套循環(huán)聯(lián)合規(guī)劃的使用。(完全禁止嵌套循環(huán)聯(lián)合是不可能的,但是把這個(gè)變量置為 OFF 將導(dǎo)致規(guī)劃器在存在其他可用方法的情況下不采用嵌套循環(huán)規(guī)劃。) 
ON 
允許使用嵌套循環(huán)聯(lián)合(缺省設(shè)置)。 
OFF 
禁止使用嵌套循環(huán)聯(lián)合。 
ENABLE_MERGEJOIN 
打開或者關(guān)閉規(guī)劃器對融合(merge join)聯(lián)合規(guī)劃的使用。 
ON 
允許使用融合(merge join)聯(lián)合(缺省設(shè)置)。 
OFF 
禁止使用融合(merge join)聯(lián)合。 
ENABLE_HASHJOIN 
打開或者關(guān)閉規(guī)劃器對哈希(散列)規(guī)劃的使用。 
ON 
允許使用哈希(散列)聯(lián)合(缺省設(shè)置)。 
OFF 
禁止使用哈希(散列)聯(lián)合。 
GEQO 
為使用基因優(yōu)化器算法設(shè)置閾值. 
ON 
允許基因優(yōu)化器算法優(yōu)化帶有11個(gè)或11個(gè)以上表的語句.(這也是缺省設(shè)置) 
  
ON=# 
帶一個(gè)整數(shù)參數(shù),允許優(yōu)化器優(yōu)化帶有 # 或更多的表的查詢. 
  
OFF 
禁用基因優(yōu)化器. 
請參考程序員手冊中關(guān)于 GEQO 的章節(jié)獲取關(guān)于查詢優(yōu)化的更多信息。 
如果一個(gè)基于 libpq 的客戶端的環(huán)境里設(shè)置了 PGGEQO 環(huán)境變量,libpq 將在聯(lián)接啟動(dòng)時(shí)自動(dòng)把 GEQO 設(shè)置成為 PGGEQO 的值。 

KSQO 
Key Set Query Optimizer (鍵集查詢優(yōu)化)導(dǎo)致查詢規(guī)劃器把 WHERE 子句帶有許多 OR 了的 AND 子句的查詢(象 "WHERE (a=1 AND b=2) OR (a=2 AND b=3) ...")轉(zhuǎn)換成一個(gè)UNION 查詢。這個(gè)方法可以比缺省的實(shí)現(xiàn)更快,但是它不一定得出相同的結(jié)果,因?yàn)椤NION 隱含的加了一條 SELECT DISTINCT 子句以消除相同的行。KSQO 常用于和 MicroSoft Access 這樣的東西并用,它容易生成這種類型的查詢。 
ON 
打開優(yōu)化。 
OFF 
關(guān)閉優(yōu)化(缺省設(shè)置)。 
DEFAULT 
等效于聲明 SET KSQO='OFF'。 
KSQO 算法對帶有許多 OR 了的 AND 子句的查詢是非常必要的,不過在 Postgres 7.0 和以后的版本里,標(biāo)準(zhǔn)的規(guī)劃器可以很好的操作這些查詢。 
MAX_EXPR_DEPTH 
設(shè)置分析器可接受的最大表達(dá)式嵌套深度.缺省值對任何常見查詢都足夠高了,但是你可以根據(jù)需要提高它.(不過如果你升得太高,你就會(huì)冒因?yàn)槎褩R绯龆鴮?dǎo)致后端崩潰的危險(xiǎn).) 
integer 
最大深度.
輸出
SET VARIABLE 
成功的返回信息. 
WARN: Bad value for variable (value) 
如果命令設(shè)置變量失敗.返回此信息. 

描述
SET 將在一個(gè)會(huì)話過程中為變量修改配置參數(shù). 
當(dāng)前值可以使用 SHOW 獲得,而且可以使用 RESET 命令將各個(gè)值設(shè)回缺省.參數(shù)和值都是大小寫無關(guān)的.注意參數(shù)值總是用字符串來表達(dá),所以用單引號括起來. 

SET TIME ZONE 改變會(huì)話的缺省時(shí)區(qū)偏移量.一個(gè) SQL-會(huì)話總是以缺省的時(shí)區(qū)偏移作為初始值. SET TIME ZONE 語句用于改變當(dāng)前的 SQL 會(huì)話的缺省時(shí)區(qū)偏移量. 

注意
SET variable 語句是 Postgres 語言的擴(kuò)展.
請參考 SHOW 和 RESET 命令顯示或重置當(dāng)前值. 

用法
設(shè)置時(shí)區(qū)風(fēng)格為 ISO(參數(shù)不需要引號): 
SET DATESTYLE TO ISO;
對4個(gè)或更多表的查詢,使 GEQO 生效(請注意這里用單引號操作參數(shù)值里面的等號): 
 
SET GEQO = 'ON=4';
設(shè)置 GEQO 為缺省值: 
 
SET GEQO = DEFAULT;
把時(shí)區(qū)設(shè)置為 Berkeley, California,使用雙引好保存時(shí)區(qū)聲明里大寫字符的屬性: 
 
SET TIME ZONE "PST8PDT";
SELECT CURRENT_TIMESTAMP AS today;
   
         today
------------------------
 1998-03-31 07:41:21-08
設(shè)置時(shí)區(qū)為 Italy(注意這里要求的單或者雙引號來操作特殊的字符): 
 
SET TIME ZONE 'Europe/Rome';
SELECT CURRENT_TIMESTAMP AS today;
   
         today
------------------------
 1998-03-31 17:41:31+02
兼容性
SQL92
在 SQL92 里沒有 SET variable 語句(除了 SET TRANSACTION ISOLATION LEVEL)。SQL92 用于 SET TIME ZONE 的語法有一點(diǎn)點(diǎn)不同,只允許為時(shí)區(qū)聲明一個(gè)整數(shù)值: 
SET TIME ZONE { interval_value_expression | LOCAL }
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 开平市| 德清县| 古田县| 松江区| 库车县| 大关县| 叶城县| 万山特区| 九龙县| 上饶市| 大荔县| 盱眙县| 新源县| 城步| 汉阴县| 宝丰县| 阜新市| 清水河县| 白河县| 北京市| 高密市| 庆阳市| 湖口县| 仁怀市| 广昌县| 偃师市| 嘉禾县| 娱乐| 石河子市| 丰台区| 龙州县| 廉江市| 宁阳县| 柏乡县| 故城县| 波密县| 凤阳县| 松潘县| 甘孜| 葵青区| 澜沧|