Mysql5.7.6及之后版本中的LOCAL、CASCADED OPTION使用
5.7.6之前:
- WITH LOCAL CHECK OPTION
会检验视图v4WHERE子句下的条件,但是不会检验底层视图v3的WHERE子句条件
- WITH CASCADED CHECK OPTION
会检查视图v4WHERE子句下的条件,然后检查底层视图v3的WHERE条件
- 没有check option
均不检查
5.7.6版本:
- WITH LOCAL CHECK OPTION
会检验视图v4WHERE子句下的条件,然后检验底层视图v3的WHERE子句条件
- WITH CASCADED CHECK OPTION
会检查视图v4WHERE子句下的条件,然后检查底层视图v3的WHERE子句条件
- 没有check option
不会检查视图v4WHERE子句下的条件,但会检查底层视图三的WHERE子句条件
演示:
- 创建表a1
- 创建三个视图v1_a1、v2_a2、v3_a1
v2_a1、v3_a1是基于视图v1_a1派生的.
- 5.7.6版本之前
- 视图v2_a1使用local check option,insert 时只会测试v2_a1中的WHERE子句。
- 视图v3_a1使用cascaded check option,insert时会测试v3_a1中的WHERE子句,还会测试v1_a1中的WHERE子句
- 5.7.6版本
- 使用local check option,insert时不仅要检查v2_a1中的WHERE子句,还会检查v1_a1中的WHERE子句;
- 使用cascaded依旧如之前的规则。