0
我寫了一個AFTER UPDATE
觸發器,用於更新表ABC
的列abc_xyz
。當有人試圖更新同一張表的列ans_mode
時,觸發器應該觸發。 abc_xyz
的默認值爲0
。觸發器應將其更新爲1
。AFTER UPDATE觸發器
CREATE OR REPLACE TRIGGER switchtrigger
AFTER UPDATE OF ans_mode
ON ABC
BEGIN
UPDATE ABC
SET abc_xyz = 1
WHERE abc_xyz= 0 AND ;
END;
我想寫一個AND
條件,以便只更新那些特定的行。
謝謝賈維斯, 我試着寫行觸發器,但得到了突變表錯誤,因爲更新在同一個表中完成。 ABC_XYZ的默認值爲0.因此,查詢中提到的IF條件會更新所有行。 我只需要更新那些用戶/某人進行更改的行。 –
在行觸發器中,您不能執行任何訪問聲明表的表的SQL語句 - 這就是「mutating table」錯誤的全部內容。 ON UPDATE行觸發器只會針對根據聲明的條件實際更改的行調用,因此此觸發器只會影響ABC.ANS_MODE已更改的那些行。我建議你寫一些代碼並測試一下。 –
對不起,延遲迴復。 謝謝賈維斯。我測試過,它工作。 如果我使用After update觸發器會產生什麼區別(除了更新後會觸發) –