'with check option'에 해당되는 글 1건
- 2009.06.30 [Oracle] DML 절에 With Check option 조건
[Oracle] DML 절에 With Check option 조건
DML절에 With Check option절을 주어 View에서 생성된 조건에 대한 값을 반환과
동시에 DML에서 check 제약조건을 걸수 있다.
ex_)
INSERT INTO ( SELECT employee_id, last_name, email, hire_date, job_id, salary
FROM empl3
WHERE department_id = 50
WITH CHECK OPTION)
Values (9999, 'kkm', 'kyungmo', sysdate, 'kim', 5000);
View안에 where절을 보면 departmen_id값이 50인 값만을 반환한다. 동시에
department_id값에 check 제약조건을 50으로 걸어둔 것이다 .
지금 예문은
ORA-01402 : view WITH CHECK OPTION where-clauses violation
이렇게 에러가난다. 이유는 위에 설명과 같다.
insert되는 department값이 50값만 들어갈수 있는데. department_id 컬럼에 대한 명시는
insert절에 되어 있지 않다. 그래서 check 제약조건에 걸린다.
이걸 맞는 구문으로 바꾼다면
INSERT INTO ( SELECT employee_id, last_name, email, hire_date, job_id,
salary, department_id
FROM empl3
WHERE department_id = 50
WITH CHECK OPTION)
Values (9999, 'kkm', 'kyungmo', sysdate, 'kim', 5000, 50);
이렇게 바꿔주면 check 제약조건에 걸리지 않는 쿼리가 된다.
[출처] DML 절에 With Check option 조건|작성자 슈퍼고
'Database / Sql' 카테고리의 다른 글
ntwdblib.dll (1) | 2009.11.30 |
---|---|
[MS-SQL] 함수 모음 및 사용법 (1) | 2009.11.23 |
[Oracle] 오라클 객체(4) [SYNONYM] (0) | 2009.04.15 |
[Oracle] 오라클 객체(3) [SEQUENCE(시퀀스)] (0) | 2009.04.15 |
[Oracle] 오라클 객체(2) [VIEW 테이블] (0) | 2009.04.15 |