PostgreSQL 9.3.1 中文手册 | ||||
---|---|---|---|---|
上一页 | 上一级 | 章 47. 系统表 | 下一页 |
pg_collation表描述可用的排序规则,本质上从一个SQL名字映射到操作系统本地类别。 参阅第 22.2 节获取详细信息。
表 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复制来的数据库编码。目前这些必须手动完成。