別の表からのエントリに基づいて別の表にデータを挿入するためのトリガーを作成しました。トリガが作成されますが、テーブルに値を入力すると、以下のエラーが発生します。トリガーが作成されましたが、新しいエントリの挿入後に機能しません。 ORA-04091エラーが表示されました
ORA-04091:表OOMUSER.EMTN_EVC_PAIR_STATUSトリガー/機能、変異され
ORA-06512、それが表示されないことがあります。 "OOMUSER.PORTSTATUSUPDATE" で、ライン22
ORA-04088:エラートリガー 'OOMUSER.PORTSTATUSUPDATE'
DROP TRIGGER OOMUSER.PORTSTATUSUPDATE;
CREATE OR REPLACE TRIGGER OOMUSER.PORTSTATUSUPDATE
AFTER INSERT
ON OOMUSER.EMTN_EVC_PAIR_STATUS FOR EACH ROW
DECLARE
LEGA VARCHAR2(20);
LEGB VARCHAR2(20);
ACTIVEPAIRA NUMBER;
ACTIVEPAIRB NUMBER;
BEGIN
SELECT EELA.CPE_PORT_SERVICE_ID INTO LEGA FROM EMTN_EVC_LEG_A EELA WHERE EELA.EMTN_EVC_PAIRID = :NEW.EMTN_EVC_PAIRID;
SELECT EELB.CPE_PORT_SERVICE_ID INTO LEGB FROM EMTN_EVC_LEG_B EELB WHERE EELB.EMTN_EVC_PAIRID = :NEW.EMTN_EVC_PAIRID;
IF (:NEW.STATUS = 'Active' OR :NEW.STATUS = 'Planned')
THEN
INSERT INTO OOMUSER.EMTN_ETN_CPE_PORT_STATUS
(CPE_PORT_SERVICE_ID,STATUS,STATUS_START_DATETIME)
VALUES(LEGA,:NEW.STATUS,SYSDATE);
INSERT INTO OOMUSER.EMTN_ETN_CPE_PORT_STATUS
(CPE_PORT_SERVICE_ID,STATUS,STATUS_START_DATETIME)
VALUES(LEGB,:NEW.STATUS,SYSDATE);
ELSIF(:NEW.STATUS = 'Rejected' OR :NEW.STATUS = 'Cancelled')
THEN
SELECT COUNT(OVEDS.EMTN_EVC_PAIRID) INTO ACTIVEPAIRA FROM OOM_VW_EMTN_DUALEVC_STATUS OVEDS WHERE OVEDS.EMTN_EVC_PAIRID IN
(
SELECT EELA.EMTN_EVC_PAIRID FROM EMTN_EVC_LEG_A EELA WHERE EELA.CPE_PORT_SERVICE_ID =
(
SELECT EELA.CPE_PORT_SERVICE_ID FROM EMTN_EVC_LEG_A EELA WHERE EELA.EMTN_EVC_PAIRID = :NEW.EMTN_EVC_PAIRID
)
) AND UPPER(OVEDS.STATUS) IN ('ACTIVE','PLANNED');
IF(ACTIVEPAIRA = 0)
THEN
INSERT INTO OOMUSER.EMTN_ETN_CPE_PORT_STATUS
(CPE_PORT_SERVICE_ID,STATUS,STATUS_START_DATETIME)
VALUES(LEGA,:NEW.STATUS,SYSDATE);
END IF;
SELECT COUNT(OVEDS.EMTN_EVC_PAIRID) INTO ACTIVEPAIRB FROM OOM_VW_EMTN_DUALEVC_STATUS OVEDS WHERE OVEDS.EMTN_EVC_PAIRID IN
(
SELECT EELB.EMTN_EVC_PAIRID FROM EMTN_EVC_LEG_B EELB WHERE EELB.CPE_PORT_SERVICE_ID =
(
SELECT EELB.CPE_PORT_SERVICE_ID FROM EMTN_EVC_LEG_B EELB WHERE EELB.EMTN_EVC_PAIRID = :NEW.EMTN_EVC_PAIRID
)
) AND UPPER(OVEDS.STATUS) IN ('ACTIVE','PLANNED');
IF(ACTIVEPAIRB = 0)
THEN
INSERT INTO OOMUSER.EMTN_ETN_CPE_PORT_STATUS
(CPE_PORT_SERVICE_ID,STATUS,STATUS_START_DATETIME)
VALUES(LEGB,:NEW.STATUS,SYSDATE);
END IF;
END IF;
END;
/
トリガーの内側には、2つのインサートがあります。これらのテーブルのいずれかに、これらの挿入物に発生するトリガーがありますか?もしそうなら、emtn_evc_pair_status上のこれらのトリガーのどこかにselect文がありますか? – Rene
これをお読みください。 https://www.techonthenet.com/oracle/errors/ora04091.php – Utsav
@Rene:これはemtn_evc_pair_statusテーブルの唯一のトリガーではありません –