PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 48. 系统表 | 下一页

# 48.12. `pg_collation`

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

表 48-12. `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`复制来的数据库编码。目前这些必须手动完成。

上一页 | 起始页 | 下一页
`pg_class` | 上一级 | `pg_constraint`