• MySQL数据库——视图-检查选项(cascaded、local)


    目录

    检查选项

    CASCADED

    LOCAL


    检查选项

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

    1. CREATE VIEW xx
    2. AS SELECT id,name
    3. FROM
    4. XXXX WHERE id <= 20
    5. WITH CASCADED CHECK OPTION;

    CASCADED

    意为“级联”。

    比如,v2视图是基于v1视图的,如果在v2视图创建的时候指定了检查选项为 cascaded,但是v1视图创建时未指定检查选项。 则在执行检查时,不仅会检查v2,还会级联检查v2的关联视图v1。

    具体来说,例如下面这条SQL语句:

    1. create view v1
    2. as
    3. select id,name
    4. from
    5. student where id <= 20;

    其没有添加检查选项的子句,所以运行时并不会检查id <= 20;

    再看下面这条:

    1. create view v2
    2. as
    3. select id,name
    4. from
    5. v1 where id >= 10
    6. with cascaded check option;

    它是基于v1来建立视图的,并且添加了检查选项的子句,所以它会检测v2的id >= 10 ;又由于它是基于v1而创建的视图,cascaded会与之相连,所以也会检查v1的 id <= 20。

    最后看这条:

    1. create view v3
    2. as
    3. select id,name
    4. from
    5. v2 where id <= 15;

    v3是基于v2来建立视图的,v2又是基于v1来建立视图的;又因为v3本身没有添加检查选项的子句,所以只会检测v2和v1的条件。

    LOCAL

    意为 本地。

    比如,v2视图是基于v1视图的,如果在v2视图创建的时候指定了检查选项为 local ,但是v1视图创
    建时未指定检查选项。 则在执行检查时,知会检查v2,不会检查v2的关联视图v1。

    具体来说,

    1. -- 创建v1视图
    2. create view v1
    3. as
    4. select id,name
    5. from
    6. student where id <= 15;
    7. -- 创建v2视图
    8. create view v2
    9. as
    10. select id,name
    11. from
    12. v2 where id >= 10
    13. with local check option;

    创建v1视图没有指定检查选项,创建v2视图时(基于v1)指定了local的检查选项;那么会对v2进行条件检测,然后递归到v1;由于v1本身没有指定检查选项,所以不进行检测,这就是local的检查选项。

    再来创建v3:

    1. create view v3
    2. as
    3. select id,name
    4. from v2 where id < 20;

    v3本身没有指定检查选项,所以不检测;递归到v2,v2有local的检查选项,进行检测;再递归到v1,没有检查选项,不进行检测。


    END


    学习自:黑马程序员——MySQL数据库课程
     

  • 相关阅读:
    2022 杭电多校 第一场
    十三、SpringBoot错误处理底层组件和异常处理流程分析
    SICP-- 元语言抽象--Scheme的变形--惰性求值
    模糊测试面面观 | 车联网场景模糊测试解决方案
    【vue3】shallowReactive与shallowRef;readonly与shallowReadonly;toRaw与markRaw
    关闭VS Code中的鼠标悬停时的提示框(MDN Reference)
    JavaFX入门和网格布局面板的使用,Dao层交互,舞台与场景切换以及其他控件的使用
    【C++】C++入门(一)
    Android嵌套事务
    mac打开exe文件的三大方法 mac怎么运行exe文件 mac打开exe游戏 macbookpro打开exe
  • 原文地址:https://blog.csdn.net/li13437542099/article/details/133874371