↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1
测试版PostgreSQL 19 Rc 1 尚未正式发布,内容与行为在正式发布前可能变化。正式内容请看当前版本。

52.12. pg_collation #

目录 pg_collation 描述可用的排序规则,其本质上是从 SQL 名字到操作系统区域设置类别的映射。更多信息参见第 23.2 节。

表 52.12. pg_collation 列

列类型

描述

oid oid

行标识符

collname name

排序规则名称(在每个名字空间与编码的组合内唯一)

collnamespace oid(引用 pg_namespace.oid)

包含该排序规则的名字空间的 OID

collowner oid(引用 pg_authid.oid)

排序规则的拥有者

collprovider char

排序规则提供程序:d = 数据库默认值,b = builtin,c = libc,i = icu

collisdeterministic bool

排序规则是确定性的吗?

collencoding int4

该排序规则可应用的编码,或以-1 表示它可用于任何编码

collcollate text

此排序规则对象的 LC_COLLATE。如果提供程序不是 libc,则 collcollate 为 NULL,改用 colllocale。

collctype text

此排序规则对象的 LC_CTYPE。如果提供程序不是 libc,则 collctype 为 NULL,改用 colllocale。

colllocale text

此排序规则对象的提供程序区域设置名称。如果提供程序是 libc,则 colllocale 为 NULL;改用 collcollate 和 collctype。

collicurules text

此排序规则对象的 ICU 排序规则

collversion text

提供程序特有的排序规则版本。它会在创建排序规则时记录下来,并在使用时接受检查,以检测可能导致数据损坏的排序规则定义更改。


注意在这个目录中的唯一键是(collname、collencoding、collnamespace),不仅仅是(collname、collnamespace)。PostgreSQL 通常会忽略所有 collencoding 既不等于当前数据库编码、也不等于 -1 的排序规则,并且禁止创建与 collencoding = -1 的项同名的新项。因此,使用限定的 SQL 名字(schema.name)来标识一个排序规则已经足够,即使按目录定义它并不唯一。之所以将该目录定义成这样,是因为 initdb 在集簇初始化时会用系统上所有可用的区域设置填充它,因此它必须能够容纳集簇中未来可能使用到的所有编码的项。

在 template0 数据库中,创建与数据库编码不匹配的排序规则可能很有用,因为它们可以匹配之后从 template0 克隆出的数据库的编码。目前这必须手工完成。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游会在正式发布前持续修订。