示例: 级联检查选项
此示例显示如何在使用或不使用检查选项定义的多个从属视图上实施检查选项。
使用下表和视图:
CREATE TABLE T1 (COL1 CHAR(10));
CREATE VIEW V1 AS SELECT COL1
FROM T1 WHERE COL1 LIKE 'A%';
CREATE VIEW V2 AS SELECT COL1
FROM V1 WHERE COL1 LIKE '%Z'
WITH LOCAL CHECK OPTION;
CREATE VIEW V3 AS SELECT COL1
FROM V2 WHERE COL1 LIKE 'AB%';
CREATE VIEW V4 AS SELECT COL1
FROM V3 WHERE COL1 LIKE '%YZ'
WITH CASCADED CHECK OPTION;
CREATE VIEW V5 AS SELECT COL1
FROM V4 WHERE COL1 LIKE 'ABC%';将根据使用 INSERT 或 UPDATE 语句操作的视图来检查不同的搜索条件。
- 如果对 V1 执行了操作,那么不会检查任何条件,因为 V1 未指定 WITH CHECK OPTION。
- 如果对 V2 进行操作,
- COL1 必须以字母 Z 结尾,但不需要以字母 A 开头。 这是因为检查选项为 LOCAL ,并且视图 V1 未指定检查选项。
- 如果对 V3 进行操作,
- COL1 必须以字母 Z 结尾,但它不需要以字母 A 开头。 V3 未指定检查选项,因此不能满足其自己的搜索条件。 但是,必须检查 V2 的搜索条件,因为 V3 是在 V2上定义的,并且 V2 具有检查选项。
- 如果对 V4 进行操作,
- COL1 必须以 "AB" 开头,并且必须以 "YZ" 结尾。 由于 V4 指定了 WITH CASC报检查选项,因此必须检查 $TAG3 V4 $TAG4 所依赖的每个视图的每个搜索条件。
- 如果对 V5 执行了操作,
- COL1 必须以 "AB" 开头,但不一定以 "ABC" 开头。 这是因为 V5 未指定检查选项,因此不需要检查其自己的搜索条件。 但是,由于在 V4上定义了 V5 ,并且 V4 具有级联检查选项,因此必须检查 V4, V3, V2和 V1 的每个搜索条件。 即, COL1 必须以 "AB" 开头,以 "YZ" 结尾。
如果创建了 V5 WITH LOCAL CHECK OPTION ,那么在 V5 上运行意味着 COL1 必须以 "ABC" 开头并以 "YZ" 结尾。 LOCAL CHECK OPTION 添加了第三个字符必须是 "C" 的附加要求。