视图 with check option
程序员文章站
2022-03-25 16:42:32
...
自定义一个table 名为 :Star
1、先定义视图找出所有张姓明星:
create view IS_Star
as
select *from Star
where name like '张%'
with check option
获取张姓明星情况:
select * from IS_Star
此时,with check option 约束条件是对视图里面所有的name 首字符必须是以 ‘张’字打头。不管是修改前还是修改后都必须总从此规则,否则出错。
比如
update IS_Star set name='刘家辉' where name='张家辉
这是不可以的。 而
update IS_test set name='张家界' where name='张家辉'
是可以。前后姓没有变。满足where 后面的约束条件。
而如果在选取视图的时候没有使用 with check option 约束语句的话,那么。是可以改得。也就是张家辉既可以变成刘家辉也可以变成张家界。
小结:
对于有where 子句的视图,有with check option 的话,对视图增加或修改数据后,该数据必须满足 where 条件,不满足的话,增加或修改会失败。
1.对于update,有with check option,要保证update后,数据要被视图查询出来
2.对于delete,有无with check option都一样
3.对于insert,有with check option,要保证insert后,数据要被视图查询出来
4.对于没有where 子句的视图,使用with check option是多余的