比方說,我們有以下幾點:更新視圖(Oracle)的
create view view_1 as
(
select key, data from some_table_or_view;
);
create table table_1
(
key
more_data
);
create view view_2 as
(
select v1.key, v1.data, t1.more_data
from view_1 v1, table_1 t1
where v1.key = t1.key
);
create table table_2 as
(
key
data
more_data
);
create view view_3 as
(
select key, data, more_data from view_2
union
select key, data, more_data from table_2
);
所以基本上,我們已經加入了兩個數據源,一個是來自於加入,一個是原始數據。
我希望能夠做到以下幾點。
update view_3 set more_data = 'BLAH_MORE_DATA' where key = 'BLAH_KEY';
如果這在某種程度上既更新或table_1
根據table_2
是否 「BLAH_KEY」 來自table_1
或table_2
。
目前我能想到的唯一的辦法就是:
create view view_3 as
(
select 'TAB1' as source, key, data, more_data from view_2
union
select 'TAB2' as source, key, data, more_data from table_2
);
,然後做使用它檢查源列,並更新相應的表中的PL/SQL功能的更新,但是這意味着我必須保持查看和PL/SQL功能同步。
我正在尋找一種更好的方式來做到這一點。
使用PL/SQL程序已經實現複雜邏輯的好方法:)我upvoted schurik的觸發答案,因爲它的工作原理,但我還是寧願程序的方法。 –