CREATE COLLATION — 새 문자 정렬 규칙 정의
CREATE COLLATION [ IF NOT EXISTS ]이름
( [ LOCALE =로케일
, ] [ LC_COLLATE =lc_collate
, ] [ LC_CTYPE =lc_ctype
, ] [ PROVIDER =제공자
, ] [ VERSION =버전
] ) CREATE COLLATION [ IF NOT EXISTS ]이름
FROM기존_문자정렬규칙
CREATE COLLATION
명령은
운영체제 로케일 설정에 지정된 정렬 규칙을 이용하는 새
문자 정렬 규칙을 만들거나, 기존 문자 정렬 규칙을 복사해서
새 문자 정렬 규칙을 만든다.
문자 정렬 규칙을 만드려면, 해당 스키마에 대해서
CREATE
권한이 있어야 한다.
IF NOT EXISTS
지정한 이름의 문자 정렬 규칙이 이미 있어도 오류로 처리하지 않고, 알림 메시지만 보여준다. 이 때 기존 문자 정렬 규칙이 새로 만드려고 하는 정렬 규칙과 정확하게 같은지는 확인하지 않는다.
이름
작업 대상 문자 정렬 규칙 이름. 이 이름에는 스키마 이름도 포함 할 수 있다. 스키마 이름을 지정하지 않으면, 현재 스키마 안에 만들어진다. 이 이름은 해당 스키마 안에서 유일해야 한다. (시스템 카탈로그에는 인코딩이 각기 다른 같은 이름의 문자 정렬 규칙이 있다. 이 경우 사용되는 문자 정렬 규칙은 현재 사용하고 있는 데이터베이스의 인코딩과 같은 것이 사용된다. 그 외의 것은 무시된다.)
로케일
이 설정은 LC_COLLATE
,
LC_CTYPE
설정을 한 번에 하는 간편 설정이다.
이 설정을 하면, 이 개별 설정은 안해도 된다.
lc_collate
로케일의 LC_COLLATE
설정.
lc_ctype
로케일의 LC_CTYPE
설정.
제공자
해당 문자 정렬 규칙과 관련된 로케일 서비스용 제공자를 지정한다.
사용할 수 있는 값:
icu
,
libc
.
libc
가 기본값이다.
OS와 서버 빌드 옵션에 따라 이것을 선택할 수 있다.
버전
문장 정렬 규칙의 버전 이름(문자열값). 보통 이 옵션은
생략하며, 이렇게 해서 기존 운영체제에서 제공하는
해당 정렬 규칙의 버전을 그대로 사용한다.
이 버전 값은 pg_upgrade
사용할 때,
기본 정렬 규칙을 그대로 사용하기 위해서 그 값을 기록해 둔다.
이 버전에 대해서는 ALTER COLLATION 명령 설명서에서 소개한다.
기존_문자정렬규칙
복사할 원본 기존 문자 정렬 규칙 이름. 만들어질 새 문자 정렬 규칙의 세부 속성은 기존 문자 정렬 규칙의 것을 그대로 따르며, 두 정렬 규칙과 의존 관계는 없다.
사용자 정의 문자 정렬 규칙은 DROP COLLATION
명령으로
지운다.
문자 정령 규칙을 만드는 방법에 대해서는 23.2.2.3절에서 자세히 소개하고 있다.
특정 libc
문자 정렬 규칙 제공자를 사용할 때는,
그 로케일이 현재 데이터베이스에서 수용 가능해야한다.
이 정확한 규칙은 CREATE DATABASE에서 다루고 있다.
현재 데이터베이스 인코딩이 UTF8
일 때,
fr_FR.utf8
운영체제 로케일을
이용해서 새 로케일을 만드는 경우:
CREATE COLLATION french (locale = 'fr_FR.utf8');
ICU 제공자를 이용해서 독일 전화번호부 정렬 규칙을 만드는 경우:
CREATE COLLATION german_phonebook (provider = icu, locale = 'de-u-co-phonebk');
기존 문자 정렬 규칙에서 새 규칙을 만드는 경우:
CREATE COLLATION german FROM "de_DE";
이 때 사용할 수 있는 기존 문자 정렬 규칙 이름은 데이터베이스 서버가 사용할 수 있는 운영체제 의존적 것이여야 한다.
CREATE COLLATION
구문은 표준 SQL 구문이지만,
표준 SQL은 기존 문자 정렬 규칙을 복사하는 기능만 제공한다.
새 문자 정렬 규칙을 만드는 기능은
PostgreSQL 확장 기능이다.