受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

50.12. pg_collation #

目录pg_collation描述可用的排序规则,其本质上是从 SQL 名字到操作系统区域设置类别的映射。更多信息参见Section 23.2

Table 50.12. pg_collation

列类型

描述

oid oid

行标识符

collname name

排序规则名字(在每一个名字空间和编码中唯一)

collnamespace oid (引用 pg_namespace.oid

包含该排序规则的名字空间的OID

collowner oid (引用 pg_authid.oid

排序规则的拥有者

collprovider char

排序规则提供者:d = 数据库默认值, b = builtin,c = libc, i = icu

collisdeterministic bool

排序规则是确定性的吗?

collencoding int4

该排序规则可应用的编码,或以-1表示它可用于任何编码

collcollate name

此排序规则对象的 LC_COLLATE

collctype name

此排序规则对象的 LC_CTYPE

collversion text

排序规则的提供者相关的版本。这是在排序规则创建时记录下来的,并且在使用排序规则时会被检查以检测可能导致数据损坏的排序规则定义的改变。


注意在这个目录中的唯一键是(collnamecollencodingcollnamespace), 不仅仅是(collnamecollnamespace)。 PostgreSQL 通常会忽略所有 collencoding 既不等于当前数据库编码、也不等于 -1 的排序规则,并且禁止创建与 collencoding = -1 的项同名的新项。因此,使用限定的 SQL 名字(schema.name)来标识一个排序规则已经足够,即使按目录定义它并不唯一。之所以将该目录定义成这样,是因为 initdb 在集簇初始化时会用系统上所有可用的区域设置填充它,因此它必须能够容纳集簇中未来可能使用到的所有编码的项。

template0数据库中,创建与数据库编码不匹配的排序规则可能很有用,因为它们可以匹配之后从template0克隆出的数据库的编码。目前这必须手工完成。

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。