1
我遇到觸發器執行問題。我在下面的代碼中提供了一個觸發器。觸發器無法在Oracle SQL Developer上工作
create or replace
TRIGGER abc_tr01
BEFORE INSERT
ON tablename
FOR EACH ROW
BEGIN
UPDATE tablename
SET dtCreatedDate = SYSDATE
WHERE incidentid = (SELECT :NEW.incidentid
FROM DUAL );
END;
該觸發假定的插入是在該表中進行之前更新tablename
表在其中的列(dtCreatedDate
),並且存儲SYSDATE
1。
但是,它無法更新dtCreatedDate
字段。
我檢查了觸發器已啓用。它也在插入時被解僱。我通過在即時檢測到的觸發代碼中注入語法錯誤來檢查該錯誤。
我正在使用SQL Developer 3.0。
請幫忙。
沒有必要發出在觸發體的'update'聲明如果'tablename'在觸發的'on'條款和'tablename'在'update'語句是一樣的。只需使用要爲其分配值的列的':new'限定符即可。 ':new.dtCreatedDate:= SYSDATE' –
當它被解僱時,你肯定會得到一個「* table is mutating」錯誤。 –