MySQL 视图——检查选项(cascaded、local)

视图的检查选项:当使用WITH CHECK OPTION子句创建视图时,MySQL会通过视图检查正在更改的每个行,例如 插入,更新,删除,以使其符合视图的定义。 MySQL允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性。为了确定检查的范围,mysql提供了两个选项:CASCADED 和 LOCAL ,默认值为 CASCADED

一、cascaded

#case1
#创建一个基于students表的视图
create or replace view v1 as select id,name from students where id<=20;
#由于没有检查选项,所以插入id>20的数据也会插入成功
insert into v1 values(21,'john');#插入成功

#case2
#创建一个基于v1的视图,并添加cascaded检查选项
create or replace view v2 as select id,name from v1 where id>10 with cascaded check option;

#添加检查选项后,再插入数据,MySQL就会判断插入数据是否满足条件,
#由于此视图是基于v1的,所以现在可以插入的id值为 10<id<=20。
insert into v2 values22'lucy');#插入失败

#case3
#创建一个基于v2的视图
create or replace v3 as select id,name from v2 where id<=15;

#由于v3没有添加检查选项,但v3是基于v2的,所以现在可以插入的id值依然为 10<id<=20。
insert into v3 values(18,'Tom');#插入成功

insert into v3 values(24,'kobe');#插入失败

当我们操作当前视图时,cascaded检查选项是,如果当前视图有检查选项,则插入数据要满足包括当前视图条件以及满足当前视图所依赖的视图的条件。如果当前视图没有检查选项,则插入数据要满足当时视图所依赖视图有检查选项及其依赖的视图的条件。

二、local

#case1
#创建一个基于students表的视图
create or replace view v1 as select id,name from students where id<=20;

insert into v1 values(21,'john');#插入成功

#case2
#创建一个基于v1的视图,并添加local检查选项
create or replace view v2 as select id,name from v1 where id>10 with local check option;

#添加检查选项后,再插入数据,MySQL就会判断插入数据是否满足条件,
#由于此视图是基于v1的,v1没有检查选项,所以现在可以插入的id值为 id>10。
insert into v2 values22'lucy');#插入成功

#case3
#创建一个基于v2的视图
create or replace v3 as select id,name from v2 where id<=15;

#由于v3没有添加检查选项,但v3是基于v2的,所以现在可以插入的id值依然为 id>10。
insert into v3 values(18,'Tom');#插入成功

当我们在操作当前视图时,local检查选项是递归的查找当前视图所依赖的视图是否有检查选项,如果有,则检查;如果没有,就不做检查。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
引用\[1\]:在MySQL中,级联(cascaded)是指在进行数据操作时,对于外键关联的表,如果主表的数据发生了变化,那么从表的数据也会相应地发生变化。级联操作可以通过设置外键约束来实现。引用\[2\]:在插入数据时,如果满足级联操作的条件,MySQL会自动更新相关的从表数据。引用\[3\]:如果不满足级联操作的条件,MySQL不会自动更新从表数据。 问题: MySQL级联操作是什么意思? 回答: 在MySQL中,级联操作是指在进行数据操作时,对于外键关联的表,如果主表的数据发生了变化,那么从表的数据也会相应地发生变化。级联操作可以通过设置外键约束来实现。当满足级联操作的条件时,MySQL会自动更新相关的从表数据;如果不满足级联操作的条件,MySQL不会自动更新从表数据。 #### 引用[.reference_title] - *1* [Mysql后端开发(索引、优化、事务、引擎、锁)](https://blog.csdn.net/u014685437/article/details/129927180)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Mysql视图检查选项CASCADED与LOCAL的区别](https://blog.csdn.net/oYinHeZhiGuang/article/details/124707332)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值