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