CREATE COLLATION

Name

CREATE COLLATION -- 定义一个新的排序规则

Synopsis

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_COLLATELC_CTYPE的快捷方式。 如果你定义了这个变量,就不能定义其他两个变量了。

_lc_collate_

使用指定操作系统中的字符编码来设置LC_COLLATE。 字符编码对当前数据库来说必须是可使用的。(参见CREATE DATABASE了解更精确的信息。)

_lc_ctype_

使用指定操作系统中的字符编码来设置LC_CTYPE。 字符编码对当前数据库来说必须是可使用的。(参见CREATE DATABASE了解更精确的信息。)

_existing_collation_

复制已存在的排序规则。新的排序规则将和已存在的规则有相同的属生,但它是一个独立的对像。

注意

使用DROP COLLATION命令可以删除一个用户定义的排序规则。

参见Section 22.2了解更多在PostgreSQL中支持的排序规则。

例子

根据操作系统中的系统字符编码fr_FR.utf8来创建一个排序规则(假定当前数据库的编码是UTF8):

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

从一个已存在的排序规则中复制一个新的排序规则:

CREATE COLLATION german FROM "de_DE";

这对在应用程序中使用独立于操作系统的排序规则名是很方便的。

兼容性

在SQL标准中有CREATE COLLATION命令,但它仅限于从已存在的排序规则中拷贝。 允许创建一个新的排序规则是PostgreSQL的扩展。

参见

ALTER COLLATION, DROP COLLATION