天天看点

视图创建语句对视图操作的影响

如果想要一个可以更新(这里的更新指的是增加,删除,修改)的视图,原表应尽量使单表,否则限制比较多。下面的情况一旦出现在视图中,视图就不允许更新。

1. 若视图是由两个以上基本表导出的,则此视图不允许更新。

2. 若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作。

3. 若视图的字段来自集函数,则此视图不允许更新。

4. 若视图定义中含有GROUP BY子句,则此视图不允许更新。

5. 若视图定义中含有DISTINCT短语,则此视图不允许更新。

6. 若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。例如将成绩在平均成绩之上的元组定义成一个视图GOOD_SC: CREATE VIEW GOOD_SC AS SELECT Sno, Cno, Grade FROM SC WHERE Grade > (SELECT AVG(Grade) FROM SC);   导出视图GOOD_SC的基本表是SC,内层查询中涉及的表也是SC,所以视图GOOD_SC是不允许更新的。

7. 一个不允许更新的视图上定义的视图也不允许更新。

8. 若视图中出现集合运算或分组函数, 如INSTINCE,SUM,MAX,COUNT等,则次数图不允许更新。

9. 出现GROUP BY,ODER BY, MODEL,START WITH 等,则此视图不可以更新。

10. 出现伪列关键字,如ROWNUM,则此视图不可以更新。