我的数据库触发器有一个问题,我应该取消插入/更新的值(RESULTATOBT
),虽然我需要OLD / NEW变量,所以我不能应用this solution (updating the table in the table trigger)。
错误是一个变异表;由于修改了每个行触发器中的表。
这是我的代码的有关摘录:
CREATE OR REPLACE TRIGGER VERIF_RESULTATS
AFTER INSERT OR UPDATE OF RESULTATOBT
ON PARTICIPATION
FOR EACH ROW
FOLLOWS VERIF_PARTICIPATION
WHEN ( NEW.RESULTATOBT IS NOT NULL )
BEGIN
UPDATE PARTICIPATION p
SET RESULTATOBT = NULL
WHERE p.CDPERS = :NEW.CDPERS
AND p.CDCOMPET = :NEW.CDCOMPET;
END;
/
预先感谢您的帮助。
N.B。:我是一个相对较新的成员,所以如果我的问题不符合正确的格式,我可能需要额外的建议/编辑。
使用before
触发器并简单地指定NULL:
CREATE OR REPLACE TRIGGER VERIF_RESULTATS
BEFORE INSERT OR UPDATE OF RESULTATOBT
ON PARTICIPATION
FOR EACH ROW
WHEN ( NEW.RESULTATOBT IS NOT NULL )
BEGIN
:new.RESULTATOBT := NULL;
END;
/