?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
控制數(shù)組輸入解析器是否將未用引號(hào)界定的NULL作為數(shù)組的 一個(gè) NULL 元素。默認(rèn)為on表示允許向數(shù)組中輸入 NULL 值。 但 8.2 之前的版本不支持這么做,因此將把NULL當(dāng)作字符 串"NULL"。如果希望向后兼容這種舊式行為,那么可以設(shè) 為off。
即使該值被設(shè)為off也仍然能夠創(chuàng)建包含 NULL 值的數(shù)組。
控制字符串文本中的單引號(hào)是否能夠用\'來(lái)表示。首選的符 合 SQL 標(biāo)準(zhǔn)的方法是將其雙寫(xiě)(''),但是PostgreSQL 在歷史上也可以用\'來(lái)表示。不過(guò)使用\' 容易導(dǎo)致安全漏洞,因?yàn)樵谀承┒嘧止?jié)字符集(比如 GBK/GB18030)中存在 最后一個(gè)字節(jié)等于\'的 ASCII 值的字符。如果客戶端代碼 沒(méi)有做到正確逃逸,那么將會(huì)導(dǎo)致 SQL 注入攻擊。如果服務(wù)器拒絕 使用\'來(lái)表示單引號(hào),那么就可以避免這種風(fēng)險(xiǎn)。 backslash_quote的可用值是on(總是允許), off(總是拒絕),safe_encoding(缺省, 僅在客戶端字符集編碼不會(huì)在多字節(jié)字符末尾包含\的 ASCII 值時(shí)允許)
需要注意的是,在字符串文本符合 SQL 標(biāo)準(zhǔn)的情況下,\ 沒(méi)有任何其它含義。這個(gè)參數(shù)影響的是如何處理不符合標(biāo)準(zhǔn)的字符串文本, 包括明確的字符串逃逸語(yǔ)法(E'...')。
這個(gè)選項(xiàng)控制CREATE TABLE和CREATE TABLE AS 在既沒(méi)有聲明WITH OIDS也沒(méi)有聲明WITHOUT OIDS 的情況下,是否在新創(chuàng)建的表中包含 OID 字段。它還決定 SELECT INTO創(chuàng)建的表里面是否包含 OID 。 在PostgreSQL8.0 之后 default_with_o ids 缺省 為off。以前版本的 PostgreSQL 缺省為 on 。
我們反對(duì)在用戶表中使用 OID ,因此大多數(shù)安裝應(yīng)該關(guān)閉這個(gè)變量。 需要 OID 的表應(yīng)該在創(chuàng)建表的時(shí)候聲明WITH OIDS。
打開(kāi)的時(shí)候,如果在普通的字符串文本里(\語(yǔ)法)出現(xiàn)了 一個(gè)反斜扛'...'并且standard_conforming_strings 被關(guān)閉,那么就會(huì)發(fā)出一個(gè)警告。缺省是on. 。
應(yīng)該使用逃逸字符串語(yǔ)法(E'...')來(lái)做逃逸,因?yàn)樵趯?lái) 的 PostgreSQL 版本里,普通的字符串對(duì)待反斜扛的行為將與標(biāo)準(zhǔn)兼容。
在9.0之前的版本中,大對(duì)象沒(méi)有連接權(quán)限,并且對(duì)所有用戶哦都市可讀可寫(xiě)的。 將這個(gè)變量設(shè)置為on,從而禁用新的權(quán)限檢查,以與以前的版本兼容。 默認(rèn)是off。
設(shè)置這個(gè)參數(shù)不會(huì)禁用所有跟大對(duì)象有關(guān)的安全檢查;除了那些在PostgreSQL 9.0中已經(jīng)修改了的性能。如,lo_import()和lo_export() 需要超級(jí)用戶權(quán)限獨(dú)立設(shè)置。
這個(gè)選項(xiàng)控制繼承語(yǔ)義,尤其是在缺省時(shí)是否在各種命令里把子表包括進(jìn)來(lái)。 如果設(shè)為off那么默認(rèn)不包含字表(相當(dāng)于默認(rèn)使用 ONLY關(guān)鍵字)。這是為了兼容 7.1 之前版本而設(shè)置的。 參考節(jié)Section 5.8獲取關(guān)于繼承的更多信息。
控制普通字符串文本('...')中是否按照 SQL 標(biāo)準(zhǔn)把反斜扛 當(dāng)普通文本。缺省為 off ,表示反斜扛當(dāng)作逃逸對(duì)待。將來(lái)的版本會(huì)把 這個(gè)設(shè)置的缺省值改成on,這樣字符串文本的語(yǔ)法就變?yōu)? 符合標(biāo)準(zhǔn)了。應(yīng)用可以檢查這個(gè)參數(shù)來(lái)判斷字符串文本如何被處理。建議 明確使用逃逸字符串語(yǔ)法(E'...')來(lái)逃逸字符。
它允許對(duì)大表的順序掃描與其他同步,因此并發(fā)掃描會(huì)同時(shí)讀相同的塊, 因此共享I/O負(fù)載。當(dāng)啟用這個(gè)參數(shù)時(shí),一個(gè)掃描會(huì)從表的中間開(kāi)始,然后 "wrap around",以掃描所有的行,同時(shí),同步已在進(jìn)程中的活躍的掃描。 對(duì)于沒(méi)有ORDER BY查詢來(lái)說(shuō),這樣的掃描會(huì)返回不可預(yù)料的順序改變。 將這個(gè)參數(shù)設(shè)置為off以支持8.3之前的特性(順序掃描通常從表的起始處開(kāi)始)。 缺省是on。
如果打開(kāi),那么表達(dá)式expr= NULL(或NULL =expr) 將被當(dāng)做exprIS NULL處理, 也就是說(shuō),如果expr得出 NULL 值則返回真, 否則返回假。正確的 SQL 標(biāo)準(zhǔn)兼容的expr= NULL 行為總是返回 NULL(未知)。因此這個(gè)選項(xiàng)缺省是off。
不過(guò),在Microsoft Access里的過(guò)濾表單 生成的查詢好像使用的是expr= NULL 測(cè)試 NULL ,因此,如果你使用這個(gè)界面訪問(wèn)數(shù)據(jù)庫(kù),你可能想把這個(gè)選項(xiàng) 打開(kāi)。因?yàn)樾稳?tt class="LITERAL">expr= NULL的表達(dá)式 總是返回 NULL ,它們?cè)趹?yīng)用中也不常見(jiàn),因此這個(gè)選項(xiàng)實(shí)際上沒(méi)有什么害處。 但是新用戶常常在涉及 NULL 的表達(dá)式語(yǔ)義上感到胡涂,因此缺省時(shí)不打開(kāi) 這個(gè)選項(xiàng)。
請(qǐng)注意這個(gè)選項(xiàng)只影響= NULL形式,不包括其它比較操作符 或者其它與一些涉及等號(hào)操作符的表達(dá)式計(jì)算(比如 IN)。因此,這個(gè)選項(xiàng)不 是垃圾程序的狗皮膏藥。
請(qǐng)參考節(jié)Section 9.2獲取相關(guān)信息。