oracle对视图进行update操作测试

视图查询结果如下:

QQ图片20190407230830.png

某些列进行了处理。

原表查询结果如下:

QQ图片20190407231022.png

执行update操作后查看视图:

update lis.dj_test set means = '修改了' where itemcode = 'WBC' ;

QQ图片20190407232202.png

但是若update 语句为如下两种:

  • update lis.dj_test set serum_source = '修改了' , means = '修改了' where batch = '55160063' ;
    上述语句报错:[Code: 1733, SQL State: 42000] ORA-01733: 此处不允许虚拟列
    原因是列serum_source 是经过函数处理的!不能直接更新!
  • update lis.dj_test set means = '修改了' where batch = '55160063' ;
    上述语句执行没有效果。
    原因是where 条件中的batch列真实数据被处理了无法判断!

如何才能对视图进行操作,同时能有效的处理update、insert、delete等语句?

给视图加上udi触发器!

替代触发器
由于在ORACLE里,不能直接对由两个以上的表建立的视图进行操作。所以给出了替代触发器。它就是ORACLE 8专门为进行视图操作的一种处理方法。
oracle触发器详解

你可能感兴趣的:(oracle对视图进行update操作测试)