On this page
52.12. pg_collation
目录pg_collation
描述了可用的归类,它们实际上是从 SQL 名称到 os 语言环境类别的 Map。有关更多信息,请参见Section 23.2。
表 52.12. pg_collation
列
Name | Type | References | Description |
---|---|---|---|
oid |
oid |
行标识符(隐藏属性;必须显式选择) | |
collname |
name |
排序规则名称(每个名称空间和编码唯一) | |
collnamespace |
oid |
pg_namespace.oid |
包含该排序规则的名称空间的 OID |
collowner |
oid |
pg_authid.oid |
排序规则的所有者 |
collprovider |
char |
排序规则的提供程序:d =数据库默认值,c = libc,i = icu |
|
collencoding |
int4 |
排序规则适用的编码,如果适用于任何编码,则为-1 | |
collcollate |
name |
LC_COLLATE (用于此整理对象) |
|
collctype |
name |
LC_CTYPE (用于此整理对象) |
|
collversion |
text |
排序规则的提供程序特定的版本。在创建归类时记录此内容,然后在使用归类时对其进行检查,以检测归类定义中可能导致数据损坏的更改。 |
请注意,此目录上的唯一键是(collname
,collencoding
,collnamespace
)而不仅仅是(collname
,collnamespace
)。 PostgreSQL 通常会忽略所有不具有collencoding
不等于当前数据库编码或-1 的归类,并且禁止创建与collencoding
= -1 相同名称的新条目。因此,使用合格的 SQL 名称(* schema
. name
*)来标识排序规则就足够了,即使根据目录定义这不是唯一的。用这种方式定义目录的原因是 initdb 在集群初始化时用系统上所有可用语言环境的条目来填充它,因此它必须能够保存集群中可能使用过的所有编码的条目。
在template0
数据库中,创建其编码与数据库编码不匹配的排序规则可能很有用,因为它们可以与后来从template0
克隆的数据库的编码匹配。目前,这必须手动完成。