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