本篇文章给大家分享的是有关Oracle 视图可以进行DML操作的条件有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
条件一:在连接视图中不能有Order by、Group by、connetc by等语句排序语句。
条件二:基础表中所有的NOT NULL列都必须在这个视图中。
条件三:需要更新的列不是虚拟列。
条件四:不能够具有分组函数。
除了以上几个限制条件之外,若需要在视图上进行DML操作的话,则在建立视图的Select语句中,还不能够有集合运算符、子查询等等。以上这些是一些必须要满足的基本条件,缺一不可。否则的话,针对视图的DML操作,就会以失败告终。
但是,并不是说符合了上面这个几个条件后,视图就可以畅所无阻的进行数据更新了,其仍然必须符合一定的规则。这其中,最重要的就是键值保存表规则。
如果连接视图中的一个基础表的键在他的视图中仍然存在,并且在连接视图中仍然是主键,则这个基础表就为键值保存表。在连接视图上,对视图进行插入、删除、更新等操作时,一次只能够对视图中的一个键值保存表进行更新。
with check option对于违反视图选择范围的数据行被插入,将受WITH CHECK OPTION检查
视图上的DML 操作:
DML操作应遵循的原则:
1.简单视图可以执行DML操作;
2.在视图包含GROUP 函数,GROUP BY子句,DISTINCT关键字时不能删除数据行;
3.在视图不出现下列情况时可通过视图修改基表数据或插入数据:
a.视图中包含GROUP 函数,GROUP BY子句,DISTINCT关键字;
b.使用表达式定义的列;
c.ROWNUM伪列。
d.基表中未在视图中选择的其他列定义为非空且无默认值。
WITH CHECK OPTION 子句
通过视图执行的INSERTS和UPDATES操作不能创建该视图检索不到的数据行, 因为它会对插入或修改的数据行执行完整性约束和数据有效性检查。 (也就是说在执行INSERTS、UPDATES时,WHERE条件中除需要INSERT、UPDATE本身的限制条件之外,还需要加上视图创建时的WHERE条件。)
以上就是Oracle 视图可以进行DML操作的条件有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
原创文章,作者:3628473679,如若转载,请注明出处:https://blog.ytso.com/199361.html