DROP VIEW
데이터베이스에서 뷰를 제거합니다. 단 한 번의 DROP VIEW 명령으로 여러 뷰를 삭제할 수 있습니다. 이 명령은 되돌릴 수 없습니다.
필수 권한
DROP VIEW에 필요한 권한은 다음과 같습니다.
수퍼유저
DROP VIEW 권한이 있는 사용자
보기 소유자
구문
DROP VIEW [ IF EXISTS ] name [, ... ] [ CASCADE | RESTRICT ]
파라미터
- IF EXISTS
-
지정된 뷰가 존재하지 않는 경우 오류 메시지와 함께 종료하는 대신, 명령이 아무 것도 변경하지 않고 뷰가 존재하지 않는다는 메시지를 반환함을 나타내는 절입니다.
이 절은 스크립트 작성 시 유용하므로, DROP USER가 존재하지 않는 뷰에 대해 실행되는 경우에는 스크립트가 실패하지 않습니다.
- 이름
-
제거할 뷰의 이름입니다.
- CASCADE
-
다른 뷰와 같이, 뷰에 종속되는 객체를 자동으로 삭제함을 나타내는 절입니다.
보기, 테이블 같은 다른 데이터베이스 객체에 종속되지 않는 보기를 새로 만들려면 보기 정의에 WITH NO SCHEMA BINDING 절을 포함시키십시오. 자세한 내용은 CREATE VIEW 단원을 참조하십시오.
CASCADE를 포함하고 삭제된 데이터베이스 객체 수가 10개 이상인 경우 데이터베이스 클라이언트가 요약 결과에 삭제된 객체를 모두 나열하지 않을 수도 있습니다. 이는 일반적으로 SQL 클라이언트 도구에 반환되는 결과에 대한 기본 제한이 있기 때문입니다.
- RESTRICT
-
테이블에 종속된 객체가 있는 경우 뷰를 삭제하지 않음을 나타내는 절입니다. 이 동작이 기본값입니다.
예시
다음 예에서는 event라는 뷰를 삭제합니다.
drop view event;
종속 항목이 있는 뷰를 제거하려면 CASCADE 옵션을 사용하십시오. 예를 들어, EVENT라는 테이블로 시작해봅시다. 다음 예에서 보듯이, CREATE VIEW 명령을 사용하여 EVENT 테이블의 eventview 뷰를 생성합니다.
create view eventview as select dateid, eventname, catid from event where catid = 1;
이제 첫 번째 뷰 eventview를 기반으로 하는 myeventview라는 두 번째 뷰를 생성합니다.
create view myeventview as select eventname, catid from eventview where eventname <> ' ';
eventview 및 myeventview의 두 가지 뷰가 생성되었습니다.
myeventview 뷰는 eventview를 상위 뷰로 둔 하위 뷰입니다.
eventview 뷰를 삭제하기 위해 사용할 명령은 분명히 다음과 같습니다.
drop view eventview;
참고로, 이 경우에 이 명령을 실행하면 다음과 같은 오류가 발생합니다.
drop view eventview; ERROR: can't drop view eventview because other objects depend on it HINT: Use DROP ... CASCADE to drop the dependent objects too.
이 문제를 해결하려면 오류 메시지의 제안에 따라 다음 명령을 실행합니다.
drop view eventview cascade;
eventview 및 myeventview가 모두 올바로 삭제되었습니다.
다음 예에서는 eventview 뷰가 존재하는 경우에는 이를 삭제하고 존재하지 않는 경우에는 아무 작업도 수행하지 않고 메시지를 반환합니다.
drop view if exists eventview;