🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 47.14\. `pg_collation` `pg_collation`表描述可用的排序规则,本质上从一个SQL名字映射到操作系统本地类别。 参阅[Section 22.2](#calibre_link-667)获取详细信息。 **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`复制来的数据库编码。目前这些必须手动完成。