2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1

52.12. pg_collation #

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

表 52.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

排序規則的提供程式特定版本。此版本在建立排序規則時記錄,然後在使用時進行檢查,以檢測可能導致資料損壞的排序規則定義中的更改。


請注意,此目錄的唯一鍵是(collnamecollencodingcollnamespace),而不僅僅是(collnamecollnamespace)。PostgreSQL 通常會忽略所有 collencoding 不等於當前資料庫編碼或 -1 的排序規則,並且禁止建立與 collencoding = -1 的條目具有相同名稱的新條目。因此,即使根據目錄定義不是唯一的,使用限定 SQL 名稱(schema.name)來標識排序規則就足夠了。定義目錄的方式是因為 initdb 在群集初始化時會用系統中所有可用區域設定的條目填充它,因此它必須能夠容納群集中可能使用的所有編碼的條目。

template0 資料庫中,建立編碼不匹配資料庫編碼的排序規則可能很有用,因為它們可以匹配後來從 template0 克隆的資料庫的編碼。目前這需要手動完成。

提交更正

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