2011-02-09 131 views
0

有表OLD和類似的NEW。我想在現有的表中插入一個觸發器事件,對於每個新插入的行,這個事件會將新插入的行插入到NEW表中。觸發的身體裏面,我需要包括低於之前聚集在插入新老值查詢:pl sql:從另一個表中插入數據的觸發器

insert into NEW 
select (select a.id,a.name,a.address,b.jitter,a.packet,a.compo,b.rtd,a.dur from OLD a, 
     select address,packet,compo, avg(jitter) as jitter, avg(rtd) as rtd from OLD 
     group by address,packet,compo) b 
     where a.address=b.address and a.packet=b.packet and a.compo=b.compo; 

你可以糾正任何可能的錯誤或下面的語句暗示其他觸發語法?

CREATE OR上OLD REPLACE TRIGGER插入 更新後的每一行 開始 MY上述 端選擇查詢;

回答

0

對於每行觸發器,您無法查詢表本身。如果你這樣做,你會得到一個變異的表錯誤信息。 我建議只使用觸發器來實現最基本的功能,例如發放ID號和非常基本的檢查。 如果您確實使用觸發器執行更復雜的任務,那麼您可能會很容易地得到一個非常難以調試和維護的系統,因爲出現在知識之外的各種操作都會非常困難。

看這個問題的另一種方法:getting rid of Insert trigger

0

Oracle流也可能是一個很好的解決方案。在應用處理程序中,您可以包含自己的自定義PL/SQL代碼。此過程將在COMMIT之後調用,因此您可以避免變更表錯誤。

但是,Streams需要大量設置才能使其正常工作。對你正在做的事情可能是矯枉過正的。