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’:

 

CREATE OR REPLACE VIEW

finance_dept

AS

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

WITH CHECK OPTION;

 

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 (…);

 

update

(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.

 

원본 위치 <http://www.dba-oracle.com/t_with_check_option.htm>


Advertisements

CREAture에 대하여

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

답글 남기기

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

WordPress.com 로고

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

Twitter 사진

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

Facebook 사진

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

Google+ photo

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

%s에 연결하는 중