视图的with check option

如题所述

第1个回答  2022-07-06
这里我们创建了一个视图,并使用了with check option来限制了视图。 然后我们来看一下视图包含的结果:select * from testview得到:

然后我们在试图将其中一条更新:

OK,这条更新语句可以执行,并没有什么问题,但是当我们执行另一条更新时:

就会出现视图 WITH CHECK OPTIDN 违反 where 子句的错误,这是因为什么呢?

但是需要说明的是,虽然指定了with check option,我们还是可以删除视图中的数据。例如上例中,我们可以使用

我创建一个视图:

加上了with check option;后,不能执行插入操作:

什么原因?不加上with check option则可以!
with check option可以这么解释:通过视图进行的修改,必须也能通过该视图看到修改后的结果。比如你insert,那么加的这条记录在刷新视图后必须可以看到;如果修改,修改完的结果也必须能通过该视图看到;如果删除,当然只能删除视图里有显示的记录。
而你只是查询出sdept='is'的纪录,你插入的根本不符合sdept='is'呀,所以就不行。
默认情况下,由于行通过视图进行添加或更新,当其不再符合定义视图的查询的条件时,它们即从视图范围中消失。

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网