對不起,我的英語。插入或刪除後的Oracle觸發器
我有2個表:
Table1
id
table2_id
num
modification_date
和
Table2
id
table2num
我想打一個觸發器,它後插入或刪除Table1
在Table2.table1lastnum
更新的最後一個值num
。
我的觸發器:
CREATE OR REPLACE TRIGGER TABLE1_NUM_TRG
AFTER INSERT OR DELETE ON table1
FOR EACH ROW
BEGIN
IF INSERTING then
UPDATE table2
SET table2num = :new.num
WHERE table2.id = :new.table2_id;
ELSE
UPDATE table2
SET table2num = (SELECT num FROM (SELECT num FROM table1 WHERE table2_id = :old.table2_id ORDER BY modification_date DESC) WHERE ROWNUM <= 1)
WHERE table2.id = :old.table2_id;
END IF;
END TABLE1_NUM_TRG;
但刪除後Table1
我有錯誤:
ORA-04091: table BD.TABLE1 is mutating, trigger/function may not see it
ORA-06512: at "BD.TABLE1_NUM_TRG", line 11
ORA-04088: error during execution of trigger 'BD.TABLE1_NUM_TRG'
我在做什麼錯?
你試圖運行從你'DELETE'ing一排桌子的'SELECT'聲明觸發之前定義爲delete.Try。 –
谷歌的錯誤代碼ORA-04091,你會得到很多答案。 –