2014-12-03 68 views
0

我得到ORA-04088:觸發器「CUSTOM.CLOSE_WORK_FLOW_ACTIVITY」的執行過程中的錯誤,當我試圖寫一個觸發如下表都在變異時觸發試圖查詢視圖

create or replace trigger CLOSE_ACTIVITY 
    BEFORE UPDATE OF STATUS ON ORDERS referencing new as new 
    for each row 
    declare 
    ln_order_count NUMBER:=0; 
    ln_act_id_no_sn NUMBER:=0; 
    ln_req_id NUMBER:=0; 
    ln_wq_id Number; 
BEGIN 
    if :new.status='COMPLETE' then 
     select request_id into ln_req_id from all_orders where id=:new.id; 
    --Useful code 
    endif; 
end; 

這裏訂單是表和all_orders是在ORDERS表上查詢的視圖。現在,當觸發器被解僱時,我得到了上述錯誤。

你能幫助我嗎?

回答

0

當觸發器試圖更新從中讀取的表時,會發生變化表錯誤。在你的情況下,它是ORDERS表。

最好避免觸發這些類型的活動,或使用語句級觸發器。如果這兩個都不可行,請嘗試將觸發器更改爲AFTER UPDATE of STATUS on ORDERS

這應該在更新完成後選擇發出時解決。 (但請確保將其更改爲AFTER觸發器不會影響您的業務邏輯)

+0

我試過使用AFTER,即使這樣也沒有幫助。我也不想在這裏更新表格。我試圖從內部查詢表的視圖進行查詢。 – 2014-12-04 01:37:41