pg_import_system_collations()
是一个系统函数,用于从操作系统中可用的排序规则添加到系统目录。
pg_import_system_collations()
在 PostgreSQL 10 中添加。
用法
pg_import_system_collations (schema
regnamespace
) →integer
pg_import_system_collations()
通常在安装新的操作系统区域设置后使用。
提供的模式通常是 pg_catalog
,但也可能是用户定义的模式。
返回添加的新排序规则对象的数目。
更改历史记录
- PostgreSQL 16
- 添加了 Windows 支持(提交 bf03cfd1)
- PostgreSQL 10
- 添加(提交 aa17c06f)
示例
确定缺少所需的区域设置
postgres=# CREATE TABLE foo (id INT NOT NULL, val TEXT COLLATE "de_DE.utf8"); ERROR: collation "de_DE.utf8" for encoding "UTF8" does not exist
安装缺少的区域设置,这里在基于 Debian 的系统上
# apt-get install -y language-pack-de ... Generating locales (this might take a while)... de_AT.UTF-8... done de_BE.UTF-8... done de_CH.UTF-8... done de_DE.UTF-8... done de_IT.UTF-8... done de_LI.UTF-8... done de_LU.UTF-8... done Generation complete.
执行 pg_import_system_collations()
postgres=# SELECT pg_import_system_collations('pg_catalog'); pg_import_system_collations ----------------------------- 14 (1 row)
现在可以使用所需的排序规则创建表
postgres=# CREATE TABLE foo (id INT NOT NULL, val TEXT COLLATE "de_DE.utf8"); CREATE TABLE
如果没有可导入的新排序规则,则返回 0
postgres=# SELECT pg_import_system_collations('pg_catalog'); pg_import_system_collations ----------------------------- 0 (1 row)
必须始终显式指定目标模式
postgres=# SELECT pg_import_system_collations(); ERROR: function pg_import_system_collations() does not exist LINE 1: SELECT pg_import_system_collations(); ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.
参考
- PostgreSQL 文档: 排序规则管理函数