oracle 11r2不会在删除,更新,插入时触发

时间:2015-11-18 16:17:16

标签: oracle triggers

我有两个表和一个触发器。我需要在插入或更新之前更新一个表或删除其他表。我写了触发器,但是没有工作。 有触发器:

CREATE TRIGGER TT.BF_SHT_BAZ2   
  BEFORE INSERT OR UPDATE OR DELETE
  ON KADR.BAZ2
  FOR EACH ROW
BEGIN

  IF inserting
  THEN
    UPDATE DAT20 d20
      SET d20.DINP = d20.DINP + 1
      WHERE d20.PODR = :NEW.KOD
      AND d20.SLUG = :NEW.SLU
      AND d20.DOLG = :NEW.DOL;


  ELSIF updating
  THEN

    UPDATE DAT20 d20
      SET d20.DINP = d20.DINP - 1
      WHERE d20.PODR = :OLD.KOD
      AND d20.SLUG = :OLD.SLU
      AND d20.DOLG = :OLD.DOL;

    UPDATE DAT20 d20
      SET d20.DINP = d20.DINP + 1
      WHERE d20.PODR = :NEW.KOD
      AND d20.SLUG = :NEW.SLU
      AND d20.DOLG = :NEW.DOL;


  ELSIF deleting
  THEN
    UPDATE DAT20 d20
      SET d20.DINP = d20.DINP - 1
      WHERE d20.PODR = :NEW.KOD
      AND d20.SLUG = :NEW.SLU
      AND d20.DOLG = :NEW.DOL;

  ELSE
    RAISE_APPLICATION_ERROR(-20000, 'Err redact d20.DINP ');
  END IF;

END;

1 个答案:

答案 0 :(得分:0)

答案很简单,我很惭愧。我的DAT20.DINP为NULL,NULL + 1 = NULL。我将DAT20.DINP设置为0并且全部正常工作!