0
我必須編寫一個觸發器,它將在添加消息條目後更新消息條目,如果添加的消息文本長度爲20個字或更長,則更新消息條目。我一直在得到ORA-06512和ORA-04088錯誤,這顯然是當你有一個INSERT激活的觸發器,並且你的觸發器導致另一個INSERT,從而造成一個無限循環。如何解決我的SQL觸發器中的循環?
但我在我的觸發器中有一個UPDATE,它應該是由INSERT觸發的。我似乎無法找到我的代碼邏輯中的缺陷。有沒有另外寫這個?
CREATE OR REPLACE TRIGGER Length
AFTER INSERT ON Messages
FOR EACH ROW
WHEN (length(new.msg_text) - length(replace(new.msg_text, ' ', '')) >= 20)
BEGIN
UPDATE Messages
set Messages.length = 1
WHERE Messages.msgID = :new.msgID;
END;
/
我得到一個編譯錯誤,當創建觸發器並在此之後,當觸發器被觸發ORA-04098:觸發器「XXXX.LENGTH」是無效的,失敗的重新驗證 – Kaska
是的,有一個名稱表。有沒有其他方法可以嘗試? – Kaska
消息是否有一個名爲'length'的列?你的問題當然表明它的確如此。 - Gordon Linoff –