pg_collation #目录 pg_collation 描述了可用的排序规则,它们本质上是从 SQL 名称到操作系统区域设置类别的映射。更多信息请参见 第 23.2 节。
表 51.12. pg_collation 列
|
列名 类型 描述 |
|---|
|
行标识符 |
|
排序规则名称(每个命名空间和编码都是唯一的) |
|
包含此排序规则的命名空间的 OID |
|
排序规则的所有者 |
|
排序规则的提供者: |
|
排序规则是否是确定性的? |
|
排序规则适用的编码,或者如果它适用于任何编码则为 -1 |
|
此排序规则对象的 |
|
此排序规则对象的 |
|
此排序规则对象的排序规则提供者区域设置名称。如果提供者是 |
|
此排序规则对象的 ICU 排序规则 |
|
排序规则的提供者特定版本。当创建排序规则时会记录此信息,然后在它被使用时进行检查,以检测排序规则定义中可能导致数据损坏的更改。 |
请注意,此目录上的唯一键是 (collname, collencoding, collnamespace),而不仅仅是 (collname, collnamespace)。 PostgreSQL 通常会忽略所有 collencoding 不等于当前数据库编码或 -1 的排序规则,并且禁止创建与 collencoding = -1 的条目具有相同名称的新条目。因此,即使根据目录定义这不是唯一的,使用限定的 SQL 名称(schema.name)来标识排序规则就足够了。以这种方式定义目录的原因是,initdb 在集群初始化时使用系统上所有可用的区域设置的条目来填充它,因此它必须能够保存集群中可能使用的所有编码的条目。
在 template0 数据库中,创建其编码与数据库编码不匹配的排序规则可能很有用,因为它们可能与稍后从 template0 克隆的数据库的编码匹配。这目前必须手动完成。
如果您在文档中看到任何不正确、与您使用特定功能的经验不符或需要进一步澄清的内容,请使用此表单报告文档问题。