Loading...
MySQL 9.5 Reference Manual 9.5의 27.6.4 The View WITH CHECK OPTION Clause의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
WITH CHECK OPTION 절은 업데이트 가능한 뷰에 대해 지정할 수 있으며, 이는
select_statement 안의 WHERE 절이 참이 아닌
행에 대한 insert를 방지합니다. 또한 WHERE 절이 참인
행에 대해 update를 수행하더라도, 그 update로 인해 WHERE 절이
참이 아니게 되는 경우(즉, 보이는 행이 보이지 않는 행으로 변경되는 경우)를
방지합니다.
업데이트 가능한 뷰에 대한 WITH CHECK OPTION 절에서,
뷰가 다른 뷰를 기반으로 정의되는 경우 LOCAL 및
CASCADED 키워드는 체크 검사 범위를 결정합니다.
어느 키워드도 주어지지 않으면 기본값은 CASCADED입니다.
WITH CHECK OPTION 검사는 표준을 따릅니다:
LOCAL의 경우, 뷰의 WHERE 절이
체크된 다음, 체크는 하위 뷰로 재귀적으로 내려가며 동일한 규칙을
적용합니다.
CASCADED의 경우, 뷰의 WHERE 절이
체크된 다음, 체크는 하위 뷰로 재귀적으로 내려가되, 그들에게
(체크 목적을 위해서만, 정의는 변경되지 않은 채로)
WITH CASCADED CHECK OPTION을 추가하고 동일한 규칙을
적용합니다.
check option이 없는 경우, 뷰의 WHERE 절은
체크되지 않고, 체크는 하위 뷰로 재귀적으로 내려가며
동일한 규칙을 적용합니다.
다음의 테이블 및 일련의 뷰 정의를 살펴보십시오:
1CREATE TABLE t1 (a INT); 2CREATE VIEW v1 AS SELECT * FROM t1 WHERE a < 2 3WITH CHECK OPTION; 4CREATE VIEW v2 AS SELECT * FROM v1 WHERE a > 0 5WITH LOCAL CHECK OPTION; 6CREATE VIEW v3 AS SELECT * FROM v1 WHERE a > 0 7WITH CASCADED CHECK OPTION;
여기서 v2와 v3 뷰는 다른 뷰인
v1을 기반으로 정의되어 있습니다.
v2에 대한 insert는 그 뷰의 LOCAL
check option에 대해 체크되고, 그 다음 체크는 v1로
재귀적으로 내려가 다시 규칙이 적용됩니다. v1에 대한
규칙으로 인해 체크가 실패합니다. v3에 대한 체크도 실패합니다:
1mysql> INSERT INTO v2 VALUES (2); 2ERROR 1369 (HY000): CHECK OPTION failed 'test.v2' 3mysql> INSERT INTO v3 VALUES (2); 4ERROR 1369 (HY000): CHECK OPTION failed 'test.v3'
27.6.3 Updatable and Insertable Views
27.6.5 View Metadata