手册介绍:
WITH CHECK OPTION Specify WITH CHECK OPTION to indicate that Oracle
Database prohibits any changes to the table or view that would produce rows that are
not included in the subquery. When used in the subquery of a DML statement, you
can specify this clause in a subquery in the FROM clause but not in subquery in the
WHERE clause.
with check option可以这么解释:通过视图进行的修改,必须也能通过该视图看到修改后的结果。比如你insert,那么加的这条记录在刷新视图后必须可以看到;如果修改,修改完的结果也必须能通过该视图看到;如果删除,当然只能删除视图里有显示的记录。
SQL> select * from dept;
DEPT_ID DEPT_NAME
---------- --------------------
1 a
2 b
SQL> create view v_dept as select * from dept where dept_id>1 with check option;
视图已创建。
SQL> insert into v_dept values(1,'a');
insert into v_dept values(1,'a')
*
第 1 行出现错误:
ORA-01402: 视图 WITH CHECK OPTIDN where 子句违规
SQL> insert into v_dept values(2,'a');
已创建 1 行。
SQL> rollback;
回退已完成。
SQL> select * from v_dept;
DEPT_ID DEPT_NAME
---------- --------------------
2 b
SQL> update v_dept set dept_id=1;
update v_dept set dept_id=1
*
第 1 行出现错误:
ORA-01402: 视图 WITH CHECK OPTIDN where 子句违规
SQL> update v_dept set dept_id=3;
已更新 1 行。
SQL> rollback;
回退已完成。
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9533994/viewspace-1022930/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9533994/viewspace-1022930/