【发布时间】:2019-03-01 12:44:25
【问题描述】:
我的数据库触发器有问题,我应该在其中取消插入/更新的值 (RESULTATOBT),尽管我需要 OLD/NEW 变量,所以我不能应用 this solution (updating the table in the table trigger)。
错误是一个变异表;由于在 for each row 触发器中修改了一个表。
这是我的代码的相关摘录:
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;
/
提前感谢您的帮助。
注意:我是一个相对较新的成员,所以如果我的问题不符合正确的格式,我可能需要额外的建议/修改。
【问题讨论】:
-
你没说有什么问题。
-
我猜你可能遇到了变异表错误?将您遇到的错误包括在问题中确实很有帮助,可能与生成错误的插入/更新语句一起。
VERIF_PARTICIPATION在插入/更新之前或之后做什么?如果在插入/更新之前,您可能只能通过赋值而不是另一个更新语句将值设为空。触发器可能不是您正在做的任何事情的最佳方法 - 将业务逻辑隐藏在触发器中既痛苦又令人困惑。 -
@Littlefoot 哎呀,对不起。
-
@AlexPoole 是的,我愿意。谢谢你的建议。
标签: oracle plsql database-trigger