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 권한이 있어야한다. (이러한 제한은 소유주가 바뀌면 옛 소유주는 그 뷰를 삭제 할 수 없도록 하기 위함이다. 반면, 슈퍼유저라면 모든 뷰의 소유주 변경을 자유롭게 할 수 있다.)
(스키마 이름을 포함 수도 있는) 변경 작업을 하려는 뷰의 이름
해당 뷰가 없어도 오류를 보이지 않고, 알림 메시지만 보여주고 정상 실행 된다.
한 칼럼의 초기값을 지정하거나, 지운다. 뷰의 칼럼 초기값은 해당 뷰에 지정한 룰이나, 트리거로 지정한 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