47.14. pg_collation

pg_collation表描述可用的排序规则,本质上从一个SQL名字映射到操作系统本地类别。 参阅第 22.2 节获取详细信息。

表 47-14. pg_collation 字段

名字类型引用描述
oidoid 行标识符(隐藏属性; 必须明确选择)
collnamename 排序规则名 (每个名字空间和编码唯一)
collnamespaceoidpg_namespace.oid 包含这个排序规则的名字空间的OID
collowneroidpg_authid.oid排序规则的所有者
collencodingint4 排序规则可用的编码,如果适用于任意编码为-1
collcollatename 这个排序规则对象的LC_COLLATE
collctypename 这个排序规则对象的LC_CTYPE

请注意这个表中的主键是(collname, collencoding, collnamespace)不只是(collname, collnamespace)。 PostgreSQL通常忽略所有的collencoding 不等于当前数据库编码或-1的排序规则,并且和collencoding = -1 里的条目有相同名字的新条目的创建是被禁止的。因此,使用一个受限制的SQL名字 (schema.name)足够去定义一个排序规则,即使根据表的定义这不是唯一的。 这种方式定义表的原因是initdb在集群初始化时用所有在系统上可用的区域设置的条目填充了它, 所以必须能够保持所有可能在集群中用的到编码的条目。

template0数据库中,创建编码不匹配数据库编码的排序规则可能是有用的, 因为他们可以匹配稍后从template0复制来的数据库编码。目前这些必须手动完成。