DROP TRIGGER EDITAX.TRG_IF_NTS_RESULT;
CREATE OR REPLACE TRIGGER EDITAX.TRG_IF_NTS_RESULT
AFTER UPDATE OF RESULT_CODE ON EDITAX.TAX_INVOICE_HEADER
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
SET_LEGACY_PK1 VARCHAR2(25);
BEGIN
IF :RESULT_CODE = 'Y' THEN
SELECT LEGACY_PK1 INTO SET_LEGACY_PK1
FROM TAX_INVOICE TI, TAX_INVOICE_HEADER TIH
WHERE TI.MSG_ID = TIH.MSG_ID
AND TI.SEND_TYPE IN ('0000', '1100', '2000', '2500', '3100', '3030')
AND TI.LEGACY_PK1 = :NEW.LEGACY_PK1;
INSERT INTO SEND_TAX_INVOICE
(
EAI_SEQ, LEGACY_SYSTEM_ID, LEGACY_PK1, EAI_SYSTEM_CD, EAI_STATE, EAI_OP,
KT_GUBUN_CODE, KT_EMP_NO, DOC_APRF, VAT_TYPE, VAT_KIND, SEND_ID, RECV_ID,
DOC_STATE, E_STATUS_CODE, E_STATUS_DATE, ESERO_SEND_GUBUN, ESERO_SEND_YN, SEND_IDNUMBER, RECV_IDNUMBER, MSG_ID, MSG_ID_REV, ISSUE_ID
)
(
SELECT
(SELECT MAX(EAI_SEQ) + 1 FROM SEND_TAX_INVOICE) EAI_SEQ, LEGACY_SYSTEM_ID, LEGACY_PK1, EAI_SYSTEM_CD, EAI_STATE, EAI_OP,
KT_GUBUN_CODE, KT_EMP_NO, DOC_APRF, VAT_TYPE, VAT_KIND, SEND_ID, RECV_ID,
DOC_STATE, E_STATUS_CODE, E_STATUS_DATE, ESERO_SEND_GUBUN, 'Y' ESERO_SEND_YN, SEND_IDNUMBER, RECV_IDNUMBER,
MSG_ID, MSG_ID_REV, ISSUE_ID
FROM SEND_TAX_INVOICE
WHERE E_STATUS_CODE = '000'
--AND LEGACY_PK1 = '201112110712431122540000'
AND LEGACY_PK1 = SET_LEGACY_PK1
);
END IF;
END ;
트리거는 위와 같습니다.
제가 하고 싶은건 TAX_INVOICE_HEADER 테이블의 RESULT_CODE 라는 컬럼의 값이 변경되면
TAX_INVOICE_HEADER 테이블과 TAX_INVOICE 테이블을 조인하여
RESULT_CODE 컬럼이 변경된 TI.LEGACY_PK1 컬럼 값을 구해
아래의 INSERT 문에 파라메터로 사용하려고 하는데
ora-04091 에러가 발생합니다.
트리거에 대해서 찾아봐도 워낙 초짜라 기술적인 부분이 약하다 보니 이렇게 여기에 질문 드려봅니다. ㅜㅜ |