2006. 10. 20. 16:13ㆍOracle/Oracle Study
view를 통해 insert 가 되는데 with check option 을 사용 여부에 따라 뷰의 조건에 해당하는
데이터만 삽입,삭제,수정 할 수 있다.
--예제를 보시면 훨씬 쉽게 이해 하실 수 있을 겁니다.
ex)
create table testtable
(empno number(10) ,
deptno number(10),
name varchar2(20))
tablespace users;
insert into testtable values(10,20,'abc');
insert into testtable values(20,30,'ccc');
이런식으로 대충 몇개 쭈-욱 데이터를 넣어요!
이제 view를 만들어봅시다.
1. with check option을 사용하지 않은 view
create view testview2
as
select * from testtable where empno in (10,20,30,40);
2. with check option을 사용한 view
create view testview
as
select * from testtable where empno in (10,20,30,40)
with check option;
※ with check option 이 어떤 기능을 하는지 여기서 알수 있을 것입니다.
view를 통해서 insert가 가능 합니다.
먼저 with check option 을 사용하지 않은 view 를 통해서 insert를 해봅시다.
insert into testview2 values(10,20,'view_com');
select 문을 실행시키면 데이터가 입력된 것을 확인 할 수 있습니다.
select * from testview2;
(이것은 view는 테이블이 아니기 때문에 testview에 입력된 것이 아니라 testtable에 입력된 것입니다.)
insert into testview2 values(80,90,'view_com2');
이것도 역시 테이블에서 확인해 보면 정상적으로 삽입 된 것을 볼 수 있다.
(view에 제약조건이 걸려 있기 때문에 view에는 나타나지 않고 testtable에는 나타난 것을 확인합니다.)
여기까지 정상적으로 모든것이 insert가 된 것을 확인 할수 있을 겁니다.
이제, with check option을 사용한 view 를 통해서 insert를 해봅시다.
위에서 insert한 값과 똑같이 넣어 보겠습니다.
insert into testview values(10,20,'view_com'); 아무 이상없이 실행 될것입니다.
하지만
insert into testview values(80,90,'view_com2');
ORA-01402: 뷰의 WITH CHECK OPTION의 조건에 위배 됩니다.
이런 오류가 나오시는 것을 볼 수 있을 것입니다.
결론을 내리자면 with check option은
view를 만들 때 해당 제약조건 안에서만 삽입,삭제,수정이 가능하다는 것입니다.
위 예제는 view를 만들 때 empno가 10,20,30,40인 것들만 가져오는 것이였습니다.
그런데 with check option을 쓴 view에
empno에 80인 데이터를 넣을려고 하니 오류메세지가 나오는 것입니다.
알고보면 굉장히 간단하고 쉬운건데 너무 제가 장황하게 설명한 것 같습니다.
저도 이것에 대해 몰랐습니다. 인터넷에 찾아봐도 확실한 대답이 없었던 터라 책도 찾아보고
인터넷 자료도 수집하면서 몇 시간을 고생했답니다. 근데 너무 간단하죠!^^ㅎㅎㅎ
'Oracle > Oracle Study' 카테고리의 다른 글
Row Migration (0) | 2008.11.30 |
---|---|
10g Archive Mode로 변경 (0) | 2008.10.01 |
Rollup & Cube & Grouping 차이 (0) | 2008.05.16 |
with grant option & with admin option 차이 (0) | 2008.05.14 |
오라클 아스키로 특수문자 업데이트 (0) | 2006.10.16 |