티스토리 뷰

insert into(select s_id, s_name, reg_date, major_id, tuition, discount, sex

              from student

             where dept_id = 120)

     values(199, 'Jojo', to_date('07-JUN-99', 'DD-Mon-RR'), 'ART_309', 3400, null, 'FEMALE');


위의 문장은 현재 Jojo 라는 학생의 정보를 새롭게 추가할 때 학과아이디(dept_id)가 120라는 값과 select 절에 명시한 컬럼 값을 설정하고 있다. 원래의 의도는 학과아이디(dept_id)값도 함께 추가하는 것이지만 실제 실행결과는 다르게 나온다. select 절에 학과아이디(dept_id)를 명시하지 않았기 때문에 dept_id=120이란 값은 추가되지 못하며 그 자리에는 다음 결과 처럼 널(null)값이 들어가게 된다.



select * from student;

S_ID SNAME DEPT_ID REG_DATE  MAJOR_ID TUITION DISCOUNT SEX

101  Tom        30 31-JUL-99 STAT_101    8900       .1 MALE

102  Sean       60 17-ARP-89 IE_205      9300          MALE

107  Robert    140 28-JUN-99 MSTS_201    4500          MALE

………………………………………………………………………………………

178  Jerry     120 12-JUL-99 ART_106    22000          MALE

179  Park       60 05-JUL-98 IE_304     16500      .13 MALE

199   Jojo               07-JUN-99 ART_309      3400               FEMALE



이러한 실수를 미리 확인하고 보다 정확한 문장을 생성하기 위하여 다음과 같이 with check option을 사용하는 것이다.



insert into(select s_id, s_name, reg_date, major_id, tuition, discount, sex

              from student

             where dept_id = 120 WITH CHECK OPTION)

     values(199, 'Jojo', to_date('07-JUN-99', 'DD-Mon-RR'), 'ART_309', 3400, null, 'FEMALE');


              from student

                    *

ERROR at line 2:

ORA-01402: view WITH CHECK OPTION where-clause violation


이처럼 with check option을 사용하게 되면 select 절에 명시되지 않은 컬럼의 데이터를 추가하려는 경우 에러를 발생시키며 문장을 수정할 것을 요구하게 된다.


다음은 새롭게 수정된 문장이면 select 절에 학과아이디(dept_id)가 포함되어져 있는 것을 확인할 수 있다.



insert into(select s_id, s_name, dept_id,reg_date, major_id, tuition, discount, sex

              from student

             where dept_id = 120 WITH CHECK OPTION)

     values(144, 'Koko', 120, to_date('07-JUN-99', 'DD-Mon-RR'), 'ART_303', 3200, null, 'FEMALE');



select * from student;

S_ID SNAME DEPT_ID REG_DATE  MAJOR_ID TUITION DISCOUNT SEX

101  Tom        30 31-JUL-99 STAT_101    8900       .1 MALE

102  Sean       60 17-ARP-89 IE_205      9300          MALE

107  Robert    140 28-JUN-99 MSTS_201    4500          MALE

………………………………………………………………………………………

178  Jerry     120 12-JUL-99 ART_106    22000          MALE

179  Park       60 05-JUL-98 IE_304     16500      .13 MALE

199  Jojo          07-JUL-99 ART_309     3400          FEMALE

144  Koko      120 07-JUN-99 ART_303     3200          FEMALE

댓글
댓글쓰기 폼