我有两个表和一个触发器。我需要在插入或更新之前更新一个表或删除其他表。我写了触发器,但是没有工作。 有触发器:
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;
答案 0 :(得分:0)
答案很简单,我很惭愧。我的DAT20.DINP为NULL,NULL + 1 = NULL。我将DAT20.DINP设置为0并且全部正常工作!