create or replace view testview
as
select empno,ename from emp where ename like ‘M%’
with check option;
这里我们创建了一个视图,并使用了with check option来限制了视图。 然后我们来看一下视图包含的结果:
select * from testview得到:
EMPNO ENAME
———- ———–
7654 MARTIN
7934 MILLER
这两条记录
然后我们在试图将其中一条更新:
update testview
set ename = ‘Mike’
where empno = 7654;
OK,这条更新语句可以执行,并没有什么问题,但是当我们执行另一条更新时:
update testview
set ename = ‘Robin’
where empno = ‘7654′;
就会出现ORA-01402: 视图 WITH CHECK OPTIDN 违反 where 子句的错误,这是因为什么呢?
这是因为前面我们在创建视图时指定了witch check option关键字,这也就是说,更新后的每一条数据仍然要满足创建视图时指定的where条件,所以我们这里发生了错误ORA-01402。
但是需要说明的时 ,虽然指定了with check option,我们还是可以删除视图中的数据。例如上例中,我们可以使用
delete from test where where empno =
--------------------------------------------------------------------------------
我创建一个视图:
with
默认情况下,由于行通过视图进行添加或更新,当其不再符合定义视图的查询的条件时,它们即从视图范围中消失。例如,可创建一个查询,从而定义一个视图以在表中检索所有员工薪水低于