ALTER TYPE — 자료형 정의 바꾸기
ALTER TYPE이름OWNER TO {새소유주| CURRENT_USER | SESSION_USER } ALTER TYPE이름RENAME TO새이름ALTER TYPE이름SET SCHEMA새스키마ALTER TYPE이름RENAME ATTRIBUTE속성이름TO새속성이름[ CASCADE | RESTRICT ] ALTER TYPE이름작업[, ... ] ALTER TYPE이름ADD VALUE [ IF NOT EXISTS ]새나열값[ { BEFORE | AFTER }인근나열값] ALTER TYPE이름RENAME VALUE기존나열값TO새나열값ALTER TYPE이름SET (속성=값[, ... ] )작업자리에는: ADD ATTRIBUTE속성이름자료형[ COLLATE문자정렬규칙] [ CASCADE | RESTRICT ] DROP ATTRIBUTE [ IF EXISTS ]속성이름[ CASCADE | RESTRICT ] ALTER ATTRIBUTE속성이름[ SET DATA ] TYPE자료형[ COLLATE문자정렬규칙] [ CASCADE | RESTRICT ]
ALTER TYPE 명령은 사용자 정의 자료형의 속성을 바꾼다.
아래와 같이 여러 형태의 구문을 사용할 수 있다:
OWNER해당 자료형의 소유주를 바꾼다.
RENAME해당 자료형의 이름을 바꾼다.
SET SCHEMA해당 자료형의 스키마를 바꾼다.
RENAME ATTRIBUTE이 구문은 복합 자료형을 전용이다. 해당 개별 속성 이름을 바꾼다.
ADD ATTRIBUTE복합 자료형에서 새 속성을 추가한다. 문법은 CREATE TYPE 명령 설명서에 있는 것과 같다.
DROP ATTRIBUTE [ IF EXISTS ]
해당 복합 자료형에서 한 속성을 뺀다.
IF EXISTS 옵션을 사용하면 해당 속성이
없더라도 오류로 처리하지 않고, 알림 메시지만 보여주고 마친다.
ALTER ATTRIBUTE ... SET DATA TYPE해당 복합 자료형에 있는 한 속성의 자료형을 바꾼다.
ADD VALUE [ IF NOT EXISTS ] [ BEFORE | AFTER ]
나열형 자료에 새 나열값을 추가한다. 추가될 위치는
기준값과, 그 값의 BEFORE, AFTER
옵션으로 지정한다. 끼워넣을 위치를 지정하지 않으면 맨 뒤에 추가한다.
IF NOT EXISTS 옵션을 사용하면, 이미 추가할 나열값이
있는 경우 오류로 처리하지 않고 알림 메시지만 보여준다.
RENAME VALUE나열형 자료의 한 나열값을 바꾼다. 그 값의 위치는 상관 없다. 기존 나열값이 없거나, 이미 새 나열값이 있는 경우는 오류로 처리한다.
SET ( property = value [, ... ] )
This form is only applicable to base types. It allows adjustment of a
subset of the base-type properties that can be set in CREATE
TYPE. Specifically, these properties can be changed:
RECEIVE can be set to the name of a binary input
function, or NONE to remove the type's binary
input function. Using this option requires superuser privilege.
SEND can be set to the name of a binary output
function, or NONE to remove the type's binary
output function. Using this option requires superuser privilege.
TYPMOD_IN can be set to the name of a type
modifier input function, or NONE to remove the
type's type modifier input function. Using this option requires
superuser privilege.
TYPMOD_OUT can be set to the name of a type
modifier output function, or NONE to remove the
type's type modifier output function. Using this option requires
superuser privilege.
ANALYZE can be set to the name of a type-specific
statistics collection function, or NONE to remove
the type's statistics collection function. Using this option
requires superuser privilege.
STORAGE
can be set to plain,
extended, external,
or main (see 68.2절 for
more information about what these mean). However, changing
from plain to another setting requires superuser
privilege (because it requires that the type's C functions all be
TOAST-ready), and changing to plain from another
setting is not allowed at all (since the type may already have
TOASTed values present in the database). Note that changing this
option doesn't by itself change any stored data, it just sets the
default TOAST strategy to be used for table columns created in the
future. See ALTER TABLE to change the TOAST
strategy for existing table columns.
See CREATE TYPE for more details about these type properties. Note that where appropriate, a change in these properties for a base type will be propagated automatically to domains based on that type.
ADD ATTRIBUTE, DROP
ATTRIBUTE, ALTER ATTRIBUTE 작업은
하나의 명령에서 여러 번 사용할 수 있다.
ALTER TYPE 명령은 해당 자료형 소유주가 실행할 수 있다.
스키마를 바꾸는 경우, 해당 소유주는 새 스키마에 대해서
CREATE 권한이 있어야 한다.
소유주는 바꾸는 경우, 기존 소유주는 직간접적으로
새 소유주의 소속원이어야하며, 새 소유주는 해당 스키마에 대해서
CREATE 권한이 있어야 한다.
(새 소유주가 해당 자료형을 지우거나, 다시 만들 수 있어야 하기 때문이다.
슈퍼유저로 작업할 때는 이런 제약이 없다.)
복합 자료형에 한 속성을 추가하거나, 그 속성을 변경할 때는,
그 속성용 자료형에 대해서 USAGE 권한이 있어야 한다.
이름작업 대상 자료형 이름(스키마 이름 포함).
새이름바뀔 새 자료형 이름.
새소유주해당 자료형의 바뀔 새 소유주 이름.
새스키마해당 자료형의 바뀔 새 스키마 이름.
속성이름해당 자료형에 추가, 삭제, 변경할 속성 이름.
새속성이름바뀔 새 속성 이름.
자료형추가, 변경할 속성 자료형 이름.
새나열값나열형 자료에서 새로 추가할 나열값. 나열형에서 값은 작은 따옴표를 사용해서 지정한다.
인근나열값추가할 나열값을 기존 목록에서 끼워 넣고자 할 때, 기준이 되는 나열값. 이 값을 기준으로 앞에, 또는 뒤에 새 나열값을 끼워 넣는다. 나열형에서 값은 작은 따옴표를 사용해서 지정한다.
기존나열값나열형에서 값을 바꿀 기존 나열값. 나열형에서 값은 작은 따옴표를 사용해서 지정한다.
속성The name of a base-type property to be modified; see above for possible values.
CASCADE바꿀 자료형이 자료형처럼 사용하는 테이블인 경우, 의존 관계가 있는 모든 자료형도 모두 바꾼다.
RESTRICT바꿀 자료형이 자료형처럼 사용하는 테이블이면, 작업을 하지 않는다. 이것이 기본값이다.
ALTER TYPE ... ADD VALUE (나열형에 새로운 값 추가하는
구문) 작업이 트랜잭션 내에서 사용되었다면, 그 트랜잭션이 커밋되기
전까지 새로 추가된 값을 사용할 수 없다.
이 명령으로 추가된 나열값을 사용하는 작업이,
해당 나열형 자료형을 처음 만들 때부터 있었던 나열값을 사용하는
작업보다 몇몇 상황에서는 더 느릴 수 있다.
BEFORE 또는 AFTER 옵션을
사용해서 중간에 끼워진 나열값인 경우 그렇다. 또한,
나열값을 목록의 맨 뒤에 추가했음에도 불구하고, 느린 경우도
있다(OID 순환으로 새로 추가된 나열값의 OID가 기존 나열값보다
작은 경우). 일반적으로 이 느림을 무시해도 될 정도이나,
최적의 속도를 보장해야하는 상황이라면, 해당 자료형을 다시 만들거나,
데이터베이스 전체를 덤프하고 다시 복원해서 속도 문제를 개선할 수 있다.
자료형 이름 바꾸기:
ALTER TYPE electronic_mail RENAME TO email;
email 자료형의 소유주를 joe로 바꾸기:
ALTER TYPE email OWNER TO joe;
email 자료형의 스키마를 customers로:
ALTER TYPE email SET SCHEMA customers;
기존 복합 자료형에 속성 추가하기:
ALTER TYPE compfoo ADD ATTRIBUTE f3 int;
나열형 자료에서 red 뒤에 orange 끼워넣기:
ALTER TYPE colors ADD VALUE 'orange' AFTER 'red';
나열값 바꾸기:
ALTER TYPE colors RENAME VALUE 'purple' TO 'mauve';
To create binary I/O functions for an existing base type:
CREATE FUNCTION mytypesend(mytype) RETURNS bytea ...;
CREATE FUNCTION mytyperecv(internal, oid, integer) RETURNS mytype ...;
ALTER TYPE mytype SET (
SEND = mytypesend,
RECEIVE = mytyperecv
);
속성 추가 삭제 구문은 표준 SQL 구문이며, 나머지는 PostgreSQL 확장 기능이다.