47.14. pg_collation
pg_collation
表描述可用的排序规则,本质上从一个SQL名字映射到操作系统本地类别。 参阅Section 22.2获取详细信息。
Table 47-14. pg_collation
字段
名字 | 类型 | 引用 | 描述 |
---|---|---|---|
oid |
oid |
行标识符(隐藏属性; 必须明确选择) | |
collname |
name |
排序规则名 (每个名字空间和编码唯一) | |
collnamespace |
oid |
pg_namespace .oid |
包含这个排序规则的名字空间的OID |
collowner |
oid |
pg_authid .oid |
排序规则的所有者 |
collencoding |
int4 |
排序规则可用的编码,如果适用于任意编码为-1 | |
collcollate |
name |
这个排序规则对象的LC_COLLATE |
|
collctype |
name |
这个排序规则对象的LC_CTYPE |
请注意这个表中的主键是(collname
, collencoding
, collnamespace
)不只是(collname
, collnamespace
)。 PostgreSQL通常忽略所有的collencoding
不等于当前数据库编码或-1的排序规则,并且和collencoding
= -1 里的条目有相同名字的新条目的创建是被禁止的。因此,使用一个受限制的SQL名字 (_schema_
._name_
)足够去定义一个排序规则,即使根据表的定义这不是唯一的。 这种方式定义表的原因是initdb在集群初始化时用所有在系统上可用的区域设置的条目填充了它, 所以必须能够保持所有可能在集群中用的到编码的条目。
在template0
数据库中,创建编码不匹配数据库编码的排序规则可能是有用的, 因为他们可以匹配稍后从template0
复制来的数据库编码。目前这些必须手动完成。