문제
뷰 사원뷰가 테이블 사원을 참조하고 있다. 이 상태에서 다음 문장을 실행할 때 실제로 삭제되는 대상으로 옳은 것은?
① 아무 것도 삭제되지 않는다 ② 사원 테이블만 삭제된다 ③ 사원 테이블과 사원뷰가 함께 삭제된다 ④ 사원뷰만 삭제된다
정답
1번
해설
정답은 ①이다. RESTRICT 옵션은 삭제하려는 객체를 참조(의존)하는 다른 객체가 하나라도 존재하면 삭제를 거부한다. 사원뷰가 사원 테이블에 의존하고 있으므로 DROP은 오류로 실패하고, 결과적으로 테이블도 뷰도 아무 것도 삭제되지 않는다. ②·③은 참조 관계를 무시한 삭제로 RESTRICT 의미에 어긋난다(참조 객체를 함께 지우는 것은 CASCADE의 동작이다). ④ 뷰만 삭제되는 일은 없다. 보충: 반대로 DROP TABLE 사원 CASCADE를 쓰면 의존 객체(뷰 등)까지 연쇄 삭제된다. RESTRICT는 안전하게 '의존 있으면 거부', CASCADE는 '의존까지 제거'로 대비된다.