ALTER TYPE

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 확장 기능이다.

관련 항목

CREATE TYPE, DROP TYPE