数据库之视图更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库之视图更新相关的知识,希望对你有一定的参考价值。

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

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

可更新视图有三种:

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

 

以上是关于数据库之视图更新的主要内容,如果未能解决你的问题,请参考以下文章

problem:vue之数据变更没有触发视图更新问题

拖动底部子视图之一时平滑更新顶部子视图(iOS)

plsql表更新后视图未更新

如何确定 postgres 视图是不是可更新

为啥可观察对象中的更新变量不会更新视图?

如何使用 EF Code-First 插入/更新可更新视图