우선 댓글로 방법을 알려주신 분께 진심으로 감사드립니다.
아래의 구문으로 처리 했습니다.
사실 위의 글에서 답을 주신 분 말씀대로 cousor로 할려고 했었지만, 실제 데이터는 오직 결과가 하나여서
이렇게 처리를 했습니다. AFTER를 BEFORE로 변경 했으며,
CREATE OR REPLACE TRIGGER EDICERTIF_MAIN_INS
BEFORE INSERT ON GETP.EDI_CERTIF_MAIN
FOR EACH ROW
---------------------------------------------------------------------------------------------------
-- Trigger Name : EDI_CERTIF_MAIN_INS
-- Description : 전자문서 수신 시 해당 테이블에 COMPANY_ID 컬럼을 채워줌.
-- Table : EDI_CERTIF_MAIN
-- Event : INSERT
---------------------------------------------------------------------------------------------------
BEGIN
SELECT COMPANY.COMPANY_ID
INTO :NEW.COMPANY_ID
FROM GETP.COMMON_COMPANY COMPANY, GETP.COMPANY_PARTNER PARTY
WHERE COMPANY.COMPANY_ID = PARTY.COMPANY_ID
AND COMPANY.EDI_CLASS_ID2 = :NEW.DOCUMENT_RECIPIENT_ID
AND PARTY.EDI_CLASS_ID = :NEW.DOCUMENT_SENDER_ID
GROUP BY COMPANY.COMPANY_ID;
END EDICERTIF_MAIN_INS;
/
로 변경하여 " END EDICERTIF_MAIN_INS; " 가 최종적으로 :NEW.COMPANY_ID를 수정하게 변경했습니다.
이는 :NEW의 유용한 특징 중 하나라고 나와있네요.
statement가 실제로 실행될 때, :NEW에 있는 어떤 값이든 사용 될 것이다라고..
따라서 EDI CERTIF_MAIN_INS를 이용하여 INSERT문을 에러를 발생시키지 않고 발생할 수있다.
참고서적 : 강력한 PL/SQL 프로그램 개발을 위한 ORACLE9i PL/SQL Programmin (정보문화사), 516페이지 中