pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
pg_collation #目录pg_collation描述可用的排序规则,其本质上是从 SQL 名字到操作系统区域设置类别的映射。更多信息参见第 22.2 节。
表 45.13. pg_collation 列
| Name | Type | References | Description |
|---|---|---|---|
collname |
name |
Collation name (unique per namespace and encoding) | |
collnamespace |
oid |
|
The OID of the namespace that contains this collation |
collowner |
oid |
|
Owner of the collation |
collencoding |
int4 |
Encoding in which the collation is applicable, or -1 if it works for any encoding | |
collcollate |
name |
LC_COLLATE for this collation object |
|
collctype |
name |
LC_CTYPE for this collation object |
注意在这个目录中的唯一键是(collname、 collencoding、 collnamespace), 不仅仅是(collname,collnamespace)。 PostgreSQL 通常会忽略所有 collencoding 既不等于当前数据库编码、也不等于 -1 的排序规则,并且禁止创建与 collencoding = -1 的项同名的新项。因此,使用限定的 SQL 名字(schema.name)来标识一个排序规则已经足够,即使按目录定义它并不唯一。之所以将该目录定义成这样,是因为 initdb 在集簇初始化时会用系统上所有可用的区域设置填充它,因此它必须能够容纳集簇中未来可能使用到的所有编码的项。
在template0数据库中,创建与数据库编码不匹配的排序规则可能很有用,因为它们可以匹配之后从template0克隆出的数据库的编码。目前这必须手工完成。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。