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文档: 排序规则管理函数