CREATE CONVERSION — 새 인코딩 변환 규칙 정의
CREATE [ DEFAULT ] CONVERSION이름
FOR원래인코딩
TO대상인코딩
FROM함수이름
CREATE CONVERSION
명령은
두 인코딩 간 문자 세트 변환 규칙을 만든다.
DEFAULT
옵션을 지정해서
클라이언트와 서버가 변환을 자동으로 할 수 있게 한다.
이 변환 규칙은 반드시 A에서 B, B에서 A, 쌍방 두 가지 모두 만들어야 한다.
지정하는 함수에 대해서는 EXECUTE
권한,
만들어질 변환 규칙의 스키마에 대해서는 CREATE
권한이
있어야 한다.
DEFAULT
DEFAULT
옵션은 원래 인코딩을 대상 인코딩으로
바꿀 때 사용할 이 변환 규칙을 기본으로 설정한다.
한 스키마 안에서는 이 인코딩 쌍에 대한 기본 변환 규칙은
하나만 있어야 한다.
이름
인코딩 변환 규칙 이름. 스키마 이름을 포함할 수도 있음. 스키마 이름을 지정하지 않으면, 현재 스키마 안에 만든다. 해당 변환 규칙 이름은 해당 스키마 안에서 유일해야 한다.
원래인코딩
원래 인코딩 이름.
대상인코딩
대상 인코딩 이름.
함수이름
인코딩 변환 작업을 수행할 함수 이름. 스키마 이름을 포함 할 수 있음. 스키마 이름이 빠지면, search_path 설정값 기준으로 함수를 찾는다.
사용할 함수는 다음과 같이 정의된다:
conv_proc( integer, -- 원래 인코딩 ID integer, -- 대상 인코딩 ID cstring, -- 원본 문자열 (null로 끝나는 C 문자열) internal, -- 변환된 문자열 (null 마침 문자가 포함된 C 문자열) integer -- 원본 문자열 길이 ) RETURNS void;
SQL_ASCII
“인코딩”은
하드코딩 되어 있기 때문에, 두 인코딩이 동시에,
SQL_ASCII
인 변환 규칙은 만들 수 없다.
사용자 정의 인코딩 변환 규칙은 DROP CONVERSION
명령으로 지운다.
다음 버전에서는 인코딩 변환 규칙을 만드는데 필요한 권한이 바뀔 수도 있다.
myfunc
함수를 이용해서
UTF8
에서 LATIN1
인코딩으로
바꾸는 인코딩 변환 규칙을 만드는 경우:
CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;
CREATE CONVERSION
구문은
PostgreSQL 확장 기능이다.
CREATE CONVERSION
구문은
표준 SQL에 없지만, 같은 일을 하고,
문법도 비슷한 CREATE TRANSLATION
표준 구문이 있다.