中在某些情況下,當一個記錄被插入到一個表中時,它應該被拆分成幾條記錄,而這些記錄將被插入。插入觸發器,其中INSERT語句在
該邏輯被寫入INSERT觸發器內,該INSERT觸發器在INSERT操作之前觸發。在這個觸發器的內部,我試圖執行一個INSERT語句,這個語句隨後導致一個遞歸的觸發器調用。不過,我不希望發生這種情況。我試圖禁用使用不便的身體觸發像
execute immediate 'ALTER TRIGGER sale_trigger DISABLE';
但是,很明顯這是一個提交操作,因此它從觸發器內不工作。
我該如何解決這個觸發器的遞歸調用?
編輯我宣佈我的觸發器爲declare PRAGMA AUTONOMOUS_TRANSACTION;
,現在我可以運行alter
聲明。但是,當我從同一觸發器中禁用觸發器時,PLSQL開發人員停止工作。我該怎麼辦? :)
也許有一種方法,你如何理解觸發器被第二次調用,例如,從數據開始插入?所以你可以直接在觸發器中檢查,並且在第二次調用的情況下不會調用插入。 – Mikhail
沒有找到一種方法來判斷觸發器是否是第一次被調用。分析數據似乎沒有幫助我的案例 – Dennis
只有我找到的解決方法是目標表中的一個額外的列與一些默認值,這將不同的值插入通過觸發器,所以觸發器將檢查它並贏得'如果它與默認值不同,請插入。似乎並不好,但是,尤其是,如果你不能改變數據結構... – Mikhail