-
SQL_VIEW OPTIONS [WITH CHECK OPTION]Data Base_Oracle/SQL 2020. 1. 9. 22:17
WITH CHECK OPTION
WITH 앞의 where 조건식이 VIEW의 제약조건으로 작용하도록 함
기본 테이블에는 적용되지 않음§ 형식
[ SQL> ~ with check option { constraint 제약조건이름 } ; ]
※ 제약조건이름을 설정하지 않으려면 중괄호 부분은 생략 가능
# 예제
▷ b_emp5 테이블에서 with check option을 사용하여 emp30 VIEW 작성(deptno 30의 모든 정보를 갖는 뷰)
▶ [ SQL> create view emp30 as select * from b_emp5 where deptno=30
with check option constraint emp30_ck;
뷰가 생성되었습니다. ]# 에러
▷ emp30 테이블의 부서번호를 20번으로 변경
▶ [ SQL> update emp30 set deptno=20 where deptno=30;
1행에 오류:
ORA-01402: 뷰의 WITH CHECK OPTION의 조건에 위배 됩니다 ]※ deptno의 값은 30만 올 수 있기 때문에 발생하는 오류
레코드 삭제나 같은 값으로의 수정은 가능함# 예제
▷ 데이터를 입력하는데 id값이 100이하인 경우에만
입력을 허용해주는 뷰(v_test1)를 작성▶ [ SQL> create view v_test1 as select * from test1
where id < 100 with check option constraint test1_ck;
뷰가 생성되었습니다 ]# 에러
▷ id가 100인 값을 입력
▶ [ SQL> insert into v_test1 values(100);
1행에 오류:
ORA-01402: 뷰의 WITH CHECK OPTION의 조건에 위배 됩니다 ]※ id 값이 100 미만인 값만 저장이 가능하기 때문에 발생하는 오류
뷰에 with check option으로 제약조건을 설정하는 방법에 대해 살펴보았습니다.
뷰에 데이터 입력을 잘못하면 테이블에도 반영되기 때문에 적절한 값이 저장될 수 있도록
check 옵션을 부여하는 것도 좋을 것 같습니다.
'Data Base_Oracle > SQL' 카테고리의 다른 글
SQL_ROWNUM & TOP-N 방식 (0) 2020.01.09 SQL_VIEW OPTIONS [WITH READ ONLY] (0) 2020.01.09 SQL_VIEW OPTIONS [OR REPLACE] (0) 2020.01.09 SQL 복합 VIEW 생성 (0) 2020.01.09 SQL 단순 VIEW_그룹 함수 사용 (0) 2020.01.09