支援版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1

51.12. pg_collation #

目錄 pg_collation 描述可用的排序規則,本質上是從 SQL 名稱到作業系統區域設定類別的映射。 更多資訊請參閱第 23.2 節

表 51.12. pg_collation 欄位

欄位類型

描述

oid oid

列識別碼

collname name

排序規則名稱(在命名空間和編碼中唯一)

collnamespace oid(參考pg_namespace.oid

包含此排序規則的命名空間的 OID

collowner oid(參考pg_authid.oid

排序規則的擁有者

collprovider char

排序規則的提供者:d = 資料庫預設值,b = 內建,c = libc,i = icu

collisdeterministic bool

排序規則是否為確定性的?

collencoding int4

排序規則適用的編碼,如果適用於任何編碼,則為 -1

collcollate text

此排序規則物件的 LC_COLLATE。 如果提供者不是 libc,則 collcollateNULL,並改用 colllocale

collctype text

此排序規則物件的 LC_CTYPE。 如果提供者不是 libc,則 collctypeNULL,並改用 colllocale

colllocale text

此排序規則物件的排序規則提供者區域設定名稱。 如果提供者是 libc,則 colllocaleNULL;改用 collcollatecollctype

collicurules text

此排序規則物件的 ICU 排序規則規則

collversion text

排序規則的提供者特定版本。 這會在建立排序規則時記錄,然後在使用時進行檢查,以偵測可能導致資料損毀的排序規則定義中的變更。


請注意,此目錄上的唯一鍵是 (collname, collencoding, collnamespace),而不僅僅是 (collname, collnamespace)。 PostgreSQL 通常會忽略所有 collencoding 不等於目前資料庫編碼或 -1 的排序規則,並且禁止建立與 collencoding = -1 的項目同名的新項目。 因此,即使根據目錄定義這不是唯一的,也足以使用限定的 SQL 名稱 (schema.name) 來識別排序規則。 以這種方式定義目錄的原因是 initdb 在叢集初始化時使用系統上所有可用的區域設定的項目填充它,因此它必須能夠保存可能在叢集中使用的所有編碼的項目。

template0 資料庫中,建立編碼與資料庫編碼不符的排序規則可能很有用,因為它們可能與稍後從 template0 複製的資料庫的編碼相符。 目前這必須手動完成。

提交更正

如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單來報告文件問題。