数据库之视图更新

视图定义---视图是从一个 或多个表(或视图) 导出的虚拟表 ,视图是数据库系统提供给用户以多种角度观察数据的重要机制

视图是一个虚表,不是实际存储的数据,更新视图是指更新视图的基本表,但不是所有的视图都能够进行更新,所以视图可以分为可更新视图不可更新视图

可更新视图有三种:

(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),如果不满足则拒绝执行,比如你视图查的是所有计算机类别的书,但是插入,修改时候却更新为了金融类 的书时候是不能执行的。

原文地址:https://www.cnblogs.com/Fusheng/p/5196264.html