pg_collation #
目录 pg_collation 描述可用的排序规则,
它们本质上是从 SQL 名称到操作系统区域设置类别的映射。
更多信息见 Section 23.2。
Table 52.12. \1 字段列说明
Column Type Description |
|---|
Row identifier |
排序规则名称(在每个命名空间和编码内唯一) |
包含此排序规则的命名空间的 OID |
排序规则的拥有者 |
排序规则的提供者: |
排序规则是否是确定性的? |
该排序规则适用的编码,如果它对任何编码都适用则为 -1 |
此排序规则对象的 |
此排序规则对象的 |
此排序规则对象提供者相关的区域设置名称。如果提供者是
|
此排序规则对象的 ICU 排序规则 |
排序规则提供者侧的版本。它在排序规则被创建时记录, 并在使用时检查,以检测可能导致数据损坏的排序规则定义变更。 |
注意,此目录上的唯一键是
(collname,
collencoding, collnamespace),
而不只是(collname,
collnamespace)。
PostgreSQL 通常会忽略所有
collencoding 不等于当前数据库编码
或 -1 的排序规则,并且禁止创建与
collencoding = -1 的条目同名的新条目。
因此,使用限定的 SQL 名称
(schema.name)
来标识一个排序规则就足够了,即使按目录定义这并不唯一。
这样定义目录的原因在于,initdb
会在集群初始化时用系统上所有可用区域设置的条目来填充它,
因此它必须能容纳集群中可能用到的所有编码的条目。
在 template0 数据库中,创建编码与数据库编码
不匹配的排序规则可能有用,
因为它们可以匹配之后从 template0 克隆出来的
数据库的编码。目前这必须手工完成。