SQL头疼中。。。

来源:百度知道 编辑:UC知道 时间:2024/05/15 19:28:41
如果用视图更新表一定要用UNION ALl来合并两个分区表对吗?

书上是那样说的,还写了几个例子,可是在下一节中又写道:

“在视图更新中有以下限制……不能用于使用集合运算符构成的行如UNION,UNIONALL,CROSSJOIN,EXCEPT,INTERSECT……”看了让我N头疼,感觉好矛盾,高手帮帮我,小弟初学的,希望能讲得好懂些,详细些,谢谢了!

仔细想想就会明白:因为视图是个虚表,如果视图是集合运算的结果,那么虚表和实表之间很可能是一对多的。对虚表进行更新,最终是要更新到实表,而实表有多个,怎么更新,更新谁呢?相信谁都不会。

视图无非就是一个查询语句啊,查出来的一个虚表

你看的书上说的意思就是“在视图更新中有以下限制……不能用于使用集合运算符构成的行如UNION,UNIONALL,CROSSJOIN,EXCEPT,INTERSECT……”文意啊,含这些运算符的视图都不能更新~就算是UNION ALL的视图也不能更新啊~

会提示:'ORA-01372:此视图的数据操纵操作违法'

多表连接查询视图的话也不能直接更新,需要用到替代触发器。