我正在写一个sql触发器来更新表中的一些列。我必须写这个触发器只在提交后触发。我读过一些关于这个主题的文章,但是大多数文章都说它是使用过程的。但是我必须用触发器来做。
CREATE OR REPLACE TRIGGER tr_reset_er_encours AFTER INSERT OR UPDATE ON T FOR EACH ROW BEGIN IF (:NEW.T.var1)=0 THEN UPDATE T SET var1=NULL END IF; END;
gtlvzcf81#
触发器在t表上触发after insert or update。你不能(至少,据我所知)* 指示 * 它在提交后触发。除此之外,重写为
t
after insert or update
CREATE OR REPLACE TRIGGER tr_reset_er_encours BEFORE INSERT OR UPDATE ON t FOR EACH ROW WHEN (new.var1 = 0) BEGIN :new.var1 := NULL; END;
因为更新触发器触发的同一个表会导致 mutating table 错误。您应该使用以下语句来说明您已阅读该程序:基本上,您应该在事务结束时提交。
1条答案
按热度按时间gtlvzcf81#
触发器在
t
表上触发after insert or update
。你不能(至少,据我所知)* 指示 * 它在提交后触发。除此之外,重写为
因为更新触发器触发的同一个表会导致 mutating table 错误。
您应该使用以下语句来说明您已阅读该程序:基本上,您应该在事务结束时提交。