ORACLE 中视图更新可以更新基表中数据,视图更新应该满足什么条件?

2024年11月18日 19:40
有2个网友回答
网友(1):

顾名思义,完整性约束当然为了保证数据的一致性和完整性啊;防止脏读取;理论上视图是防止随意篡改表数据和隐藏表的结构而存在的一个虚表,它可能是几张表的某些列够成,一般是不吸允去修改别的表的数据的,但也可以特殊情况是可以修改的;对于简单的视图,我们 通过视图可以像对普通表那样进行select,insert,update,delete操作, �6�1视图包含下列结构是不可以更新的 1:集合运算符 union,union all, intersect,minus 2:distinct关键字 3:group by,order by,connect by,或者start with 4:子查询 5:分组函数 6:需要更新的列不是视图定义的 7:具有连接查询(可以更新键值保存表的数据) 8:违反基表的约束条件 查询视图那些列可以更新可以通过user_updatable_columns数据字典 �6�1删除视图 drop view 视图名; 连接视图是指基于多表连接查询创建的视图(一般不容易修改,但通用instead of触发器可以实现修改的功能) create [or replace] [force]view 视图名 [(视图列名1,视图列名2…)] as select 语句 [with check option][constraint 约束名] [with read only] or replace 如果视图存在先删除后创建 force 如果基础表不存在强制创建视图 with check option 在使用视图时,检查涉及的数据能否通过select 语句约束 constraint 用于指定一个约束名 with read only 创建的视图只能用于查询 你自己看看对你有用么

网友(2):

应满足条件:

  1. 源表尽量使单表,否则限制会比较多。

  2. 下面的情况不应出现,否则不允许更新:

     1.distinct 关键字

     2.集合运算或分组函数。eg:intersect、sum、max、count ....

         3.出现group by 、order by、model、start with .....

         4.出现伪列关键字:eg:rownum.

3.还应考虑基表的一些约束,这些约束对视图数据的更新都有一定影响,如果需要创建可以更新的视图,可以使用instead of 触发器。