ALTER VIEW

제목

ALTER VIEW -- 뷰 속성 변경

요약

ALTER VIEW [ IF EXISTS ] 이름 ALTER [ COLUMN ] 칼럼이름 SET DEFAULT expression
ALTER VIEW [ IF EXISTS ] 이름 ALTER [ COLUMN ] 칼럼이름 DROP DEFAULT
ALTER VIEW [ IF EXISTS ] 이름 OWNER TO { 새소유주 | CURRENT_USER | SESSION_USER }
ALTER VIEW [ IF EXISTS ] 이름 RENAME TO 새이름
ALTER VIEW [ IF EXISTS ] 이름 SET SCHEMA 새스키마
ALTER VIEW [ IF EXISTS ] 이름 SET ( 뷰옵션이름 [= 뷰옵션값] [, ... ] )
ALTER VIEW [ IF EXISTS ] 이름 RESET ( 뷰옵션이름 [, ... ] )

설명

ALTER VIEW 명령은 뷰의 속성을 변경한다. (뷰에 정의된 쿼리를 변경하려면 CREATE OR REPLACE VIEW 명령을 사용한다.)

ALTER VIEW 명령은 해당 뷰의 소유주만 실행할 수 있다. 스키마를 변경하려면, 그 새 스키마의 접근 권한으로 CREATE 권한이 있어야한다. 소유주를 변경하려면, 직접적이든 간접적이든 현재 작업자 롤이 새 소유주 롤 소속으로 있어야하며, 새 소유주 또한 해당 뷰에 대한 CREATE 권한이 있어야한다. (이러한 제한은 소유주가 바뀌면 옛 소유주는 그 뷰를 삭제 할 수 없도록 하기 위함이다. 반면, 슈퍼유저라면 모든 뷰의 소유주 변경을 자유롭게 할 수 있다.)

매개 변수

이름

(스키마 이름을 포함 수도 있는) 변경 작업을 하려는 뷰의 이름

IF EXISTS

해당 뷰가 없어도 오류를 보이지 않고, 알림 메시지만 보여주고 정상 실행 된다.

SET/DROP DEFAULT

한 칼럼의 초기값을 지정하거나, 지운다. 뷰의 칼럼 초기값은 해당 뷰에 지정한 룰이나, 트리거로 지정한 INSERT 또는 UPDATE 명령이 수행 될 때 사용된다. 따라서 이 초기값은 실제 테이블의 해당 칼럼 초기값보다 우선적으로 적용된다.

새소유주

해당 뷰에 지정한 새소유주 롤을 지정한다.

새이름

해당 뷰의 바꿀 새 이름

새스키마

해당 뷰의 바꿀 새 스키마

뷰옵션이름

새로운 옵션 값을 지정하거나 지울 뷰 옵션 이름

뷰옵션값

지정한 뷰 옵션의 값

참고

역사적인 이유로, ALTER TABLE 명령을 뷰에서 사용할 수 있다. 하지만, ALTER TABLE 명령을 뷰에서 사용할 때는 위에서 언급한 뷰에서 사용할 수 있는 문법만 허용하고 있다.

예제

foo라는 뷰를 bar로 이름을 바꾸려면:

ALTER VIEW foo RENAME TO bar;

업데이트 가능한 뷰에서 한 칼럼의 초기값을 지정하는 경우:

CREATE TABLE base_table (id int, ts timestamptz);
CREATE VIEW a_view AS SELECT * FROM base_table;
ALTER VIEW a_view ALTER COLUMN ts SET DEFAULT now();
INSERT INTO base_table(id) VALUES(1);  -- ts will receive a NULL
INSERT INTO a_view(id) VALUES(2);  -- ts will receive the current time

호환성

ALTER VIEW 명령은 표준 SQL에 대한 PostgreSQL 확장형이다.

관련 항목

CREATE VIEW, DROP VIEW