ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.