《PHP与mysql程序设计第四版》 498页视图章节
文档地址 网页链接也做了详细描述
摘抄自文档
The WITH CHECK OPTION clause can be given for an updatable view to prevent inserts to rows for which the WHERE clause in the select_statement is not true. It also prevents updates to rows for which the WHERE clause is true but the update would cause it to be not true (in other words, it prevents visible rows from being updated to nonvisible rows).
WITH CHECK OPTION 语句可以防止插入 可更新view 时候不满足view 的条件(比如我创建view 筛选的table_name 中age > 5的数据,如果 我插入数据age小于等于5自然不行) ,他也可以用来防止 更新数据时本来是满足条件的要更新成不满足条件的情况(比如我创建view 的时候筛选条件是age > 5 现在我要把其中一条本来是age >5 的数据更新成age =4 即小于5 就不ok 了 ) 换句话说就是 防止本来可见的 变成不可见
In a WITH CHECK OPTION clause for an updatable view, the LOCAL and CASCADED keywords determine the scope of check testing when the view is defined in terms of another view. When neither keyword is given, the default is CASCADED. The LOCAL keyword restricts the CHECK OPTION only to the view being defined. CASCADED causes the checks for underlying views to be evaluated as well.
LOCAL 和 CASCADED 关键字主要用在一个view 来源于另外一个view的情况 ,默认CASCADED ,LOCAL 只的是只关心本view 创建时的条件 (比如view_a 包含的子句中内容 是 select * from view_b where age > 5 那么我插入到view_a 中的时候 只关心 age>5 就可以了)
如果 是CASCADED 表示还要关心 view_b 的条件( 比如
view_b 的条件是 select * from table_name where `salary` > 3000 那么上面 在view_a创建数据的时候 age = 10 但是 salary 是2000 就无法插入)
下面是一个文档里面的例子 就不翻译了
Consider the definitions for the following table and set of views:
```
CREATE TABLE t1 (a INT);
CREATE VIEW v1 AS SELECT * FROM t1 WHERE a < 2
WITH CHECK OPTION;
CREATE VIEW v2 AS SELECT * FROM v1 WHERE a > 0
WITH LOCAL CHECK OPTION;
CREATE VIEW v3 AS SELECT * FROM v1 WHERE a > 0
WITH CASCADED CHECK OPTION;
```
Here the v2 and v3 views are defined in terms of another view, v1. v2 has a LOCAL check option, so inserts are tested only against the v2 check. v3 has a CASCADED check option, so inserts are tested not only against its own check, but against those of underlying views. The following statements illustrate these differences:
```
mysql> INSERT INTO v2 VALUES (2);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO v3 VALUES (2);
ERROR 1369 (HY000): CHECK OPTION failed 'test.v3'
```
这个编辑器不支持MD 所以只能这样了
满意请采纳