CREATE COLLATION

CREATE COLLATION — 새 문자 정렬 규칙 정의

요약

CREATE COLLATION [ IF NOT EXISTS ] 이름 (
    [ LOCALE = 로케일, ]
    [ LC_COLLATE = lc_collate, ]
    [ LC_CTYPE = lc_ctype, ]
    [ PROVIDER = 제공자, ]
    [ DETERMINISTIC = boolean, ]
    [ 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와 서버 빌드 옵션에 따라 이것을 선택할 수 있다.

DETERMINISTIC

Specifies whether the collation should use deterministic comparisons. The default is true. A deterministic comparison considers strings that are not byte-wise equal to be unequal even if they are considered logically equal by the comparison. PostgreSQL breaks ties using a byte-wise comparison. Comparison that is not deterministic can make the collation be, say, case- or accent-insensitive. For that, you need to choose an appropriate LC_COLLATE setting and set the collation to not deterministic here.

Nondeterministic collations are only supported with the ICU provider.

버전

문장 정렬 규칙의 버전 이름(문자열값). 보통 이 옵션은 생략하며, 이렇게 해서 기존 운영체제에서 제공하는 해당 정렬 규칙의 버전을 그대로 사용한다. 이 버전 값은 pg_upgrade 사용할 때, 기본 정렬 규칙을 그대로 사용하기 위해서 그 값을 기록해 둔다.

이 버전에 대해서는 ALTER COLLATION 명령 설명서에서 소개한다.

기존_문자정렬규칙

복사할 원본 기존 문자 정렬 규칙 이름. 만들어질 새 문자 정렬 규칙의 세부 속성은 기존 문자 정렬 규칙의 것을 그대로 따르며, 두 정렬 규칙과 의존 관계는 없다.

참고

CREATE COLLATION takes a SHARE ROW EXCLUSIVE lock, which is self-conflicting, on the pg_collation system catalog, so only one CREATE COLLATION command can run at a time.

사용자 정의 문자 정렬 규칙은 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 확장 기능이다.

관련 항목

ALTER COLLATION, DROP COLLATION