================ SCRIPT ==================
CREATE OR REPLACE TRIGGER A.TR_IF_ER_MNFEZ
BEFORE INSERT
ON B.IF_ER_MNFEZ
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
P_MNFCD VARCHAR2(5);
P_ITEMFLAG VARCHAR2(1);
P_MNFNO NUMBER;
BEGIN
IF INSERTING THEN
IF :NEW.IFYN <> 'S' THEN
RETURN;
END IF;
P_MNFCD := '0001';
P_MNFNO := 0;
P_ITEMFLAG := (CASE :NEW.ITEMFLAG
WHEN 'D' THEN 'M'
WHEN 'V' THEN 'Y'
WHEN 'M' THEN 'W'
ELSE :NEW.ITEMFLAG
END);
IF :NEW.IFMODE = 'I' THEN
FOR A0 IN (
SELECT MNFCD FROM ER_MNF
WHERE ITEMFLAG = :NEW.ITEMFLAG
ORDER BY TO_NUMBER(SUBSTR(MNFCD, 2)) DESC
) LOOP
P_ITEMFLAG := SUBSTR(A0.MNFCD, 1, 1);
P_MNFNO := TO_NUMBER(SUBSTR(A0.MNFCD, 2)) + 1;
EXIT;
END LOOP;
IF P_MNFNO > 0 THEN
P_MNFCD := TO_CHAR(P_MNFNO);
LOOP
P_MNFCD := '0' || P_MNFCD;
IF LENGTH(P_MNFCD) = 4 THEN
P_MNFCD := P_ITEMFLAG || P_MNFCD;
EXIT;
END IF;
END LOOP;
END IF;
INSERT INTO ER_MNF(
ITEMFLAG,
MNFFLAG,
MNFCD,
MNFNM,
CHRGNM,
TELNO,
FAXNO,
CHRGHPNO,
NOTE,
RGTID,
RGTDT,
LSTUPDID,
LSTUPDDT
)
VALUES(
:NEW.ITEMFLAG,
NVL(:NEW.MNFFLAG, '1'),
P_MNFCD,
:NEW.MNFNM,
'',
'',
'',
'',
'',
'ADMIS',
SYSDATE,
'ADMIS',
SYSDATE
);
:NEW.IFYN := 'Y';
:NEW.NMCMNFCD := P_MNFCD;
ELSIF :NEW.IFMODE = 'U' THEN
UPDATE ER_MNF
SET MNFNM = :NEW.MNFNM
WHERE ITEMFLAG = :NEW.ITEMFLAG
AND MNFCD = :NEW.NMCMNFCD;
:NEW.IFYN := 'Y';
END IF;
END IF;
END;
==============================================
위 처럼 A계정에서 B계정에 있는 테이블의 트리거를 생성했는데
실행 시 ORA-04098 에러 (트리거 부적합) 오류가 나오네요.
A계정에서 B계정 해당 테이블의 SELECT, UPDATE, INSERT, DELETE 권한이 모두 있고요.
ER_MNF 테이블에 대한 권한도 A계정에서 모두 가지고 있습니다.
인터넷을 찾아봐도 왜 오류가 나는지 원인을 찾을수가 없네요.
고수분들 부탁드리겠습니다.