CREATE COLLATION
CREATE COLLATION — создать правило сортировки
Синтаксис
CREATE COLLATION [ IF NOT EXISTS ]имя
( [ LOCALE =локаль
, ] [ LC_COLLATE =категория_сортировки
, ] [ LC_CTYPE =категория_типов_символов
, ] [ PROVIDER =провайдер
, ] [ VERSION =версия
] ) CREATE COLLATION [ IF NOT EXISTS ]имя
FROMсуществующее_правило
Описание
CREATE COLLATION
определяет новое правило сортировки, используя параметры локали операционной системы, либо копируя существующее правило.
Чтобы создать правило сортировки, необходимо иметь право CREATE
в целевой схеме.
Параметры
IF NOT EXISTS
Не считать ошибкой, если правило сортировки с таким именем уже существует. В этом случае будет выдано замечание. Заметьте, что нет никакой гарантии, что существующее правило сортировки как-то соотносится с тем, которое могло бы быть создано.
имя
Имя правила сортировки, возможно, дополненное схемой. Если схема не указана, правило сортировки создаётся в текущей схеме. Заданное имя правила должно быть уникальным в этой схеме. (Системные каталоги могут содержать правила сортировки с одним именем, но предназначенные для разных кодировок, однако они будут игнорироваться, если их кодировка не совпадает с кодировкой базы данных.)
локаль
Это краткая запись для одновременной установки
LC_COLLATE
иLC_CTYPE
. Если указан этот вариант, задать любой из этих параметров отдельно нельзя.категория_сортировки
Указанная локаль операционной системы устанавливается в качестве категории локали
LC_COLLATE
.категория_типов_символов
Указанная локаль операционной системы устанавливается в качестве категории локали
LC_CTYPE
.провайдер
Задаёт провайдер, который будет использоваться для функций локализации, связанных с данным правилом сортировки. Возможные значения:
icu
,libc
. По умолчанию выбираетсяlibc
. Набор доступных значений зависит от операционной системы и параметров сборки.версия
Задаёт строку версии, сохраняемую с правилом сортировки. Обычно её не следует задавать — тогда эта версия будет получена из фактической версии правила сортировки, сообщённой операционной системой. Это указание предназначено для того, чтобы команда
pg_upgrade
смогла скопировать версию из существующей инсталляции.Что делать при несовпадении версий правил сортировки, описано в ALTER COLLATION.
существующее_правило
Имя копируемого существующего правила сортировки. Новое правило сортировки получит те же свойства, что и существующее, но будет независимым объектом.
Замечания
Для удаления созданных пользователем правил сортировки применяется команда DROP COLLATION
.
Подробнее узнать о создании правил сортировки можно в Подразделе 23.2.2.3.
Когда используется провайдер libc
, локаль должна быть применимой к кодировке текущей базы данных. Точные правила описаны в CREATE DATABASE.
Примеры
Создание правила сортировки из локали операционной системы ru_RU.utf8
(предполагается, что кодировка текущей базы данных — UTF-8
):
CREATE COLLATION russian (locale = 'ru_RU.utf8');
Создание правила сортировки с порядком, при котором латинские буквы идут перед буквами кириллицы, с использованием провайдера ICU:
CREATE COLLATION latn_cyrl (provider = icu, locale = 'ru-RU-u-kr-latn-cyrl');
Создание правила сортировки из уже существующего:
CREATE COLLATION german FROM "de_DE";
Иногда удобно использовать в приложениях имена правил сортировки, не зависящие от операционной системы.
Совместимость
Оператор CREATE COLLATION
определён в стандарте SQL, но его действие ограничено копированием существующего правила сортировки. Синтаксис создания нового правила сортировки представляет собой расширение Postgres Pro.