CREATE COLLATION

From PostgreSQL wiki
Jump to navigationJump to search
名字

CREATE COLLATION -- 定义一个新的字符序

语法概要
   CREATE COLLATION name (
            [ LOCALE = locale, ]
            [ LC_COLLATE = lc_collate, ]
            [ LC_CTYPE = lc_ctype ]
   )
   CREATE COLLATION name FROM existing_collation
描述

CREATE COLLATION 命令利用操作系统的特定区域信息定义一个新的字符序,或者通过拷贝一个现有的定义。

为了创建字符序,你必须在目标模式上具有 CREATE 权限。

参数
name
字符序的名字,可以使用模式进行修饰。如果没有用模式修饰,那么就在当前模式中定义。一个模式中的字符序名字必须唯一。(系统编目中可以存在同名但不同编码的字符序,但是如果数据库编码不匹配的话这些字符序会被忽略)
locale
同事设置LC_COLLATE和LC_CTYPE的快捷方式。如果使用这个参数,就不能再使用LC_COLLATE或LC_CTYPE参数。
lc_collate
使用操作系统特定区域的LC_COLLATE信息。区域必须能适用于当前数据库编码。(详细的规则请参见 CREATE DATABASE命令)
lc_ctype
使用操作系统特定区域的LC_CTYPE信息。区域必须能适用于当前数据库编码。(详细的规则请参见 CREATE DATABASE命令)
existing_collation
拷贝的现有字符序名字。新定义的字符序和被拷贝的字符序具有相同的属性,但它们是独立的对象。
注意

使用 DROP COLLATION 命令删除一个用户自定义字符序。

PostgreSQL对字符序的支持可以参见第 22.2 章。

示例

从操作系统区域 fr_FR.utf8 创建一个字符序(假定当前数据库编码为UTF8):

   CREATE COLLATION french (LOCALE = 'fr_FR.utf8');

从现有字符序创建一个字符序:

   CREATE COLLATION german FROM "de_DE";

如果可以在应用中使用操作系统无关的字符序的话,往往会带来方便的效果。

兼容性

SQL 标准只有从现有字符序拷贝的操作。新建字符序的操作属于PostgreSQL的扩展。

参见

ALTER COLLATION, DROP COLLATION