pg_collation
#目录 pg_collation
描述了可用的排序规则,这些排序规则实质上是从 SQL 名称到操作系统区域类别映射。有关详细信息,请参见第 24.2 节。
表 53.12. pg_collation
列
列类型 描述 |
---|
行标识符 |
排序规则名称(每个命名空间和编码唯一) |
包含此排序规则的命名空间的 OID |
排序规则的所有者 |
排序规则的提供程序: |
排序规则是否确定性? |
排序规则适用的编码,或 -1(如果适用于任何编码) |
此排序规则对象的 |
此排序规则对象的 |
此排序规则对象的 ICU 语言环境 ID |
此排序规则对象的 ICU 排序规则 |
排序规则的特定于提供程序的版本。这在创建排序规则时记录,然后在使用排序规则时进行检查,以检测排序规则定义中的更改,这可能导致数据损坏。 |
请注意,此目录上的唯一键是 (collname
, collencoding
, collnamespace
),而不仅仅是 (collname
, collnamespace
)。PostgreSQL 通常会忽略所有 collencoding
不等于当前数据库编码或 -1 的排序规则,并且禁止创建与 collencoding
= -1 的条目同名的条目。因此,即使根据目录定义这不是唯一的,也可以使用限定的 SQL 名称 (schema
.name
) 来标识排序规则。定义目录的目的是,initdb 在集群初始化时使用系统上可用的所有语言环境的条目填充目录,因此它必须能够容纳集群中可能使用的所有编码的条目。
在 template0
数据库中,创建编码与数据库编码不匹配的排序规则可能很有用,因为它们可以匹配稍后从 template0
克隆的数据库的编码。目前必须手动执行此操作。