Привет, у меня есть этот существующий триггер, и я в этом новичок, поэтому в моем тригере мне нужно захватить вставку, обновить и удалить, но, похоже, единственная работа - это вставка.
CREATE OR REPLACE TRIGGER ATCB_TCM_SAP."TRI_PM_TBLIF240"
AFTER INSERT ON ATCB_TCM_SAP.PM_TBLIF240_TMP FOR EACH ROW
DECLARE
updating_key_fields EXCEPTION;
BEGIN
IF INSERTING THEN
INSERT INTO PM_TBLIF240 VALUES (
:NEW.MSGID,
:NEW.WERKS,
:NEW.EQUNR,
:NEW.MPTYPE,
:NEW.DATE_,
:NEW.TIME,
:NEW.RECDC,
:NEW.IDIFF,
:NEW.READR,
:NEW.IIND,
:NEW.QMART
);
END IF;
IF UPDATING THEN
IF UPDATING('MSGID') THEN
RAISE updating_key_fields;
END IF;
INSERT INTO PM_TBLIF240 VALUES (
:OLD.MSGID,
:OLD.WERKS,
:OLD.EQUNR,
:OLD.QMART,
:OLD.MPTYPE,
:OLD.RECDC,
:OLD.IDIFF,
:OLD.READR,
:OLD.IIND,
:OLD.DATE_,
:OLD.TIME
);
END IF;
IF DELETING THEN
INSERT INTO PM_TBLIF240 VALUES (
:OLD.MSGID,
:OLD.WERKS,
:OLD.EQUNR,
:OLD.QMART,
:OLD.MPTYPE,
:OLD.RECDC,
:OLD.IDIFF,
:OLD.READR,
:OLD.IIND,
:OLD.DATE_,
:OLD.TIME
);
END IF;
EXCEPTION
WHEN updating_key_fields THEN
raise_application_error(-20300, 'ActiveDB Error: cannot update key fields of source table.');
END;
Я пробовал это на uodating
IF UPDATING THEN
IF UPDATING('MSGID') THEN
RAISE updating_key_fields;
END IF;
INSERT INTO PM_TBLIF240 VALUES (
:OLD.MSGID,
:NEW.WERKS,
:NEW.EQUNR,
:NEW.MPTYPE,
:NEW.DATE_,
:NEW.TIME,
:NEW.RECDC,
:NEW.IDIFF,
:NEW.READR,
:NEW.IIND,
:NEW.QMART
);
END IF;
, но все равно не повезло. Я пытаюсь изменить время в таблице 1, но не влияет на таблицу 2. Надеюсь, что кто-нибудь поможет мне с этим.