Oracle “with check option” syntax

Don Burleson



A “with check option” is designed for updatable views whereas a “check constraint” (coinstraint_type “V”) specifies valid values for an individual column:


region_name       varchar(5),

CONSTRAINT check_region

CHECK (region_name in ‘north’,’south’,’east’,’west’)


The “with check option”, it is used to prevent changes to a view that would produce rows that are not included in a sub-query.


For example, here we create a view that will only allows updates to dept=’finance’:





SELECT name, salary FROM emp WHERE dept = ‘finance’



This means only the record of employees in the finance department can be updated using this finance_dept view.  At update time we see:


insert into (select * from emp where dept = ‘finance’ with check option)

values (…);



(select * from

(select sal, empno from emp, dept where dept = ‘finance’)

with check option)

set sal = 100000 where ename = ‘KING’;


A violation produces:


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


With an ORA-01412, the SQL tried to INSERT or UPDATE a record in a view that contained a WITH CHECK OPTION.  The resulting INSERT or UPDATE violates the WHERE clause of the view.


원본 위치 <>


CREAture에 대하여

Hello :) I'm working on K-Sign Database Security Part.
이 글은 Oracle 카테고리에 분류되었습니다. 고유주소 북마크.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요: 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중