insert into (select empno, ename, job, mgr, hiredate, sal, comm, deptno from emp where deptno = 30 with check option) values (8000,'LEWIS', 'CLERK', 8000, sysdate, 100, 100, 30)
scott 계정에서 실습 내용인데 deptno = 30인 테이블에 값을 추가하는 걸로 이해가 되는데 그냥 select * from emp 해도 추가된 내용이 있습니다.
where문이 딱히 의미가 없어보이는데 무슨 역할을 하는 건가요?
임시 뷰를 통해 insert 하는 것 같습니다..저도 저런 식으로 사용이 되는지는 처음 알았네요.
아래처럼 with check option에 위배되는 값(40) 입력을 시도하면 오류가 발생합니다.
SQL> insert into (select empno, ename, job, mgr, hiredate, sal, comm, deptno from emp 2 3 where deptno = 30 with check option) 4 values (8000,'LEWIS', 'CLERK', 8000, sysdate, 100, 100, 40); from emp * ERROR at line 2: ORA-01402: view WITH CHECK OPTION where-clause violation
뷰를 통한 Insert 실습이네요.
실제로 생성된 뷰가 아닌 in-line View 를 이용했네요.
From 절의 서브쿼리를 인라인뷰라고 합니다.
http://gurubee.net/lecture/1036
참고로, 뷰를 이용한 Update 도 가능합니다.