视图中使用DML的规定
a) 可以在简单视图中执行 DML操作
b) 当视图定义中包含以下元素之一时不能使用delete:
i. 组函数
ii. GROUP BY子句
iii. DISTINCT关键字
iv. ROWNUM 伪列 DUAL伪表
c) 当视图定义中包含以下元素之一时不能使用update:
i. 组函数
ii. GROUP BY子句
iii. DISTINCT关键字
iv. ROWNUM 伪列
v. 列的定义为表达式
d) 当视图定义中包含以下元素之一时不能使用insert:
i. 组函数
ii. GROUP BY子句
iii. DISTINCT关键字
iv. ROWNUM 伪列
v. 列的定义为表达式
vi. 中非空的列在视图定义中未包括
WITH CHECK OPTION 子句
a) 使用 WITH CHECKOPTION 子句确保DML只能在特定的范围内执行
- CREATE OR REPLACE VIEW empvu20
- AS SELECT *
- FROM employees
- WHERE department_id = 20
- WITH CHECK OPTIONCONSTRAINT empvu20_ck ;
View created.
b) 任何违反WITH CHECKOPTION 约束的请求都会失败