MySQL入门指南:WITH CHECK OPTION 子句中 LOCAL 和 CASCADED 的区别
借助示例和清晰的解释,了解 WITH CHECK OPTION
子句 ‶♶♶♶♶♻‶♻8
CASCADED之间的区别。
在继续本教程之前,您应该熟悉短语WITH CHECK OPTION
。如果不是这种情况,您可以按照WITH CHECK OPTION 子句教程来确保一致性。
LOCAL & CASCADED Check 范围介绍
使用WITH CHECK OPTION
创建视图时,MySQL 会检查每一行发生更改的情况,例如插入、更新、删除,使其满足视图的定义。因为MySQL允许基于不同视图创建方法,所以它也会根据一致性来验证视图的规则。
为了指定身份验证范围,MySQL 提供了两个选项:LOCAL
和CASCADED
。如果在WITH CHECK OPTION
子句中未指定关键字,MySQL将CASCADED
。
带有 CASCADC CHECK OPTION 的 MySQL
要查看使用 CASCADED CHECK OPTION
的效果,请参阅下面的示例。
首先创建一个名为t1
的表,该表只有一列,名为:c
,数据类型为‶int。
USE testdb;
CREATE TABLE t1 (
c INT
);
SQL接下来,根据t1
记录表创建一个名为v1
的视图,用于选择值。
CREATE OR REPLACE VIEW v1
AS
SELECT
c
FROM
t1
WHERE
c > 10;
SQL由于WITH CHECK OPTION
未定义,因此即使♻与定义不匹配,以下语句也可能有效。
INSERT INTO v1(c) VALUES (5);
SQL 接下来,基于 v1
视图创建 v2
。添加句子TO CASCADED CHECK OPTION
以查看v2
。
CREATE OR REPLACE VIEW v2
AS
SELECT
c
FROM
v1
WITH CASCADED CHECK OPTION;
SQL现在,使用 v2v2
INSERT INTO v2(c) VALUES (5);
SQL 将包含值 5
的行插入到 t1
表中 MySQL 发出以下错误消息: 此操作失败,因为它创建了与定义不匹配的新行在 之后,基于 使用 这是为什么? 自视图 不过,下面的介绍还是可以的。 因为 所以,总而言之: 当使用 使用 首先,更改视图 接下来,输入与上例相同的数字。 可以正确执行。 因为观看没有规则 请注意,此语句对于使用 第三个,输入相同编号的表 在这种情况下可以成功执行,因为MySQL视图中的选项 因此,如果视图使用 与使用 请注意,在MySQL 5.7.6之前,如果您使用带有
SQLError Code: 1369. CHECK OPTION failed 'testdb.v2'
v2
创建一个名为 v3
的新视图。
SQLCREATE OR REPLACE VIEW v3
AS
SELECT
c
FROM
v2
WHERE
c < 20;
v3
将新行及其值插入到 t1
表中。 ? v3
取决于视图 v2
,v2 具有
v2 CASCADED 检查选项
。
SQLINSERT INTO v3(c) VALUES (30);
v3
不是由 WITH CHECK OPTION›s 定义的,而 2
请参阅定义。 与CASCADED CHECK OPTION
时,MySQL会绕过视图规则和基本视图规则。 带有本地检查选项的MySQL
带有本地检查选项
显示日期,使用上面的示例来查看差异。 v2
以使用带本地检查选项
。
SQLALTER VIEW v2 AS
SELECT
c
FROM
v1
WITH LOCAL CHECK OPTION;
SQLINSERT INTO v2(c) VALUES (5);
v2
。视图 v2
取决于视图 v1
。但是,v1
没有指定验证选项,因此 MySQL 会跳过 v1
视图中的规则验证。 WITH PUTTIN CHECK OPTION
创建的视图 v2
失败。 t1
到v3
。
SQLINSERT INTO v3(c) VALUES (8);
WITH LOCAL CHECK OPTIONS
没有检查♻’v的规则。
另外,请注意,在使用 WITH CASCADED CHECK OPTION
创建的 v2
示例中,此语句失败。 WITH LOCAL CHECK OPTION
,MySQL 将检查 WITH LOCAL CHECK OPTION
和 ❀ OPTION WICK 请参阅选项规则。 MARA 和 CASCADED CHECK OPTION
的视图相反,MySQL 根据视图检查所有规则。 WITH LOCAL CHECK OPTION❀的视图,它仅检查当前规则,而不是MySQL OPTION❀❀仅被视为一个基本论点。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。