视图定义—视图是从一个 或多个表(或视图) 导出的虚拟表 ,视图是数据库系统提供给用户以多种角度观察数据的重要机制
视图是一个虚表,不是实际存储的数据,更新视图是指更新视图的基本表,但不是所有的视图都能够进行更新,所以视图可以分为可更新视图和不可更新视图
可更新视图有三种:
(1).同时满足以下条件
a. 创建时select中没有聚合函数,也没有top,groupby,union子句及Distinct关键字;
b.创建视图的select 不包含从基本表中通过计算所得到的列;
c. from子句中至少有一个基本表;
总结就是不能包含基本表中不存在的数据
(2). 可更新的分区视图
(3). 通过Instead of 触发器创建的可更新视图
更新视图注意事项:
Insert :插入数据到可更新视图时应该注意,如果视图由多个基本表组成则不能使用Insert插入数据到视图
Update: 如果视图依赖多个基本表,一次的更新操作 只能变动一个基本表数据,不能在一次update中同时更新两个表的内容
Delete: 如果包含多个基本表(不包括分区表),则不能使用delete 删除视图的数据
PS:视图不能创建索引;不能把规则,默认值和触发器与视图相关联
另外创建视图时候如果添加了 With Check Option 则更新视图时候即增,删,改时候,系统首先会检查你的改变是否满足定义时候的条件(where),如果不满足则拒绝执行,比如你视图查的是所有计算机类别的书,但是插入,修改时候却更新为了金融类 的书时候是不能执行的。