•对视图进行insert update delete将会影响其基表,因为视图中不包含任何数据
•不是所有视图都可以更新(可能引起数据紊乱或者数据无意义)
•含有分组(group by 和 having)
•联接查询
•子查询
•聚合函数
• DISTINCT
•不是迫不得已,不要对视图进行更新 *** 作,因为效率低。视图主要用于查询
只有特定的视图才能被更新,而且更新视图有一些限制条件但是通过视图去更新则必须注意以下条件:
1、如果视图有一个基本关系的简单查询生成,而且它还包含了基本关系中的主关键字或是候选关键字,则可以通过这个视图进行更新 *** 作。
2、不允许对涉及到多个基本关系的视图进行更新。
3、如果视图的生成中涉及到聚集或是分组 *** 作,则不允许通过这个视图进行更新。
ISO标准给出的视图的可更新充要条件为:
1、没有指定DISTINCT,即重复元组未从查询结果中消除;
2、定义查询的SELECT列表中的每个元素均为列名(而不是常量,表达式或聚合函数),且列名出现不能多于一次;
3、FROM子句只能指定一个表,即视图必须有一个源表且用户有请求该表的权限。如果源表本身就是一个视图,那么视图必须满足这些条件。因此,排除了基于连接、并(UNION)、交(INTERSECT)或差(EXCEPT) *** 作的所有视图;
4、where子句不能包含任何引用了FROM子句的表的嵌套SELECT *** 作。
5、定义查询不能有GROUP BY或HAVING子句。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)