无效行触发器中的插入值

时间:2019-03-01 12:44:26

标签: oracle plsql database-trigger

我的数据库触发器存在问题,尽管我需要使用OLD / NEW变量,但我应该使插入/更新的值(RESULTATOBT)为空,所以我无法应用{{3 }}。

错误是变异表一;由于在每行触发器中修改了一个表触发器。

以下是我的代码的相关摘录:

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 .:我是一个相对较新的成员,所以如果我的问题不适合正确的格式,我可能需要其他建议/编辑。

1 个答案:

答案 0 :(得分:2)

使用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;
/