# 52.12.pg_collat​​ion

目录pg_collat​​ion描述了可用的排序规则,它们本质上是从 SQL 名称到操作系统区域设置类别的映射。看第 24.2 节了解更多信息。

表 52.12.pg_collat​​ion

列类型

描述
样的 样的

行标识符
校名 姓名

排序规则名称(每个命名空间和编码唯一)
命名空间 样的(参考pg_namespace.样的)

包含此排序规则的命名空间的 OID
老板 样的(参考pg_authid.样的)

排序规则的所有者
合作提供者 字符

整理提供者:d= 数据库默认值,c=库,一世= 重症监护室
碰撞确定性 布尔

排序规则是确定性的吗?
协同编码 整数4

排序规则适用的编码,如果适用于任何编码,则为 -1
整理 姓名

LC_COLLATE对于这个排序规则对象
colctype 姓名

LC_CTYPE对于这个排序规则对象
转换 文本

提供者特定的排序规则版本。这会在创建排序规则时记录下来,然后在使用排序规则时进行检查,以检测排序规则定义中可能导致数据损坏的更改。

请注意,此目录上的唯一键是 (校名,协同编码,命名空间) 不只是 (校名,命名空间)。PostgreSQL 通常会忽略所有没有的排序规则协同编码等于当前数据库的编码或 -1,并创建与具有相同名称的条目的新条目协同编码= -1 是禁止的。因此,使用合格的 SQL 名称就足够了 (图式.姓名) 来标识排序规则,即使根据目录定义这不是唯一的。以这种方式定义目录的原因是 initdb 在集群初始化时用系统上所有可用语言环境的条目填充它,因此它必须能够保存可能在集群中使用的所有编码的条目。

在里面模板0数据库,创建其编码与数据库编码不匹配的排序规则可能很有用,因为它们可以匹配后来克隆的数据库的编码模板0.这目前必须手动完成。