視圖查詢結(jié)果如下:
QQ圖片20190407230830.png
某些列進(jìn)行了處理。
原表查詢結(jié)果如下:
QQ圖片20190407231022.png
執(zhí)行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' ;
上述語句報(bào)錯(cuò):[Code: 1733, SQL State: 42000] ORA-01733: 此處不允許虛擬列
原因是列serum_source 是經(jīng)過函數(shù)處理的素征!不能直接更新檀轨! - update lis.dj_test set means = '修改了' where batch = '55160063' ;
上述語句執(zhí)行沒有效果蓄喇。
原因是where 條件中的batch列真實(shí)數(shù)據(jù)被處理了無法判斷!
如何才能對(duì)視圖進(jìn)行操作,同時(shí)能有效的處理update夜矗、insert、delete等語句让虐?
給視圖加上udi觸發(fā)器紊撕!
替代觸發(fā)器
由于在ORACLE里,不能直接對(duì)由兩個(gè)以上的表建立的視圖進(jìn)行操作赡突。所以給出了替代觸發(fā)器对扶。它就是ORACLE 8專門為進(jìn)行視圖操作的一種處理方法区赵。
oracle觸發(fā)器詳解