视图查询结果如下:
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触发器详解