by visca구루비 [SQL Query] merge into merge Trigger 트리거 [2016.03.21 13:45:18]
create or replace trigger 트리거 명 AFTER insert or update on a테이블 for each row declare t_svc_nm varchar2(50) := ''; t_mon_nm varchar2(30) := ''; t_cnt number(8) := 0; begin 조건문 t_svc_nm 셋팅 및 t_cnt 셋팅 INSERT b테이블 INTO 문 if (t_cnt > 0) then MERGE INTO c테이블 USING select 문 d ON (c테이블 조건 = select문 조건) WHEN MATCHED THEN UPDATE 문 WHEN NOT MATCHED THEN INSERT 문 end if; exception when no_data_found then 예외 처리문 end;
a테이블에 Data가 적재되면 B테이블에 적재가 되고
c테이블에 같은 Data가 있으면 update, 없으면 insert되게 트리거를 생성하였습니다.
create or replace trigger 트리거 명 AFTER insert or update on a테이블 for each row declare t_svc_nm varchar2(50) := ''; t_mon_nm varchar2(30) := ''; t_cnt number(8) := 0; t_abc := ''; begin 조건문 t_svc_nm 셋팅 및 t_cnt 셋팅 INSERT b테이블 INTO 문 //질문 insert문 종료 후 t_abc에 insert했던 값 하나 ex)t_abc := :NEW.컬럼 // if (t_cnt > 0) then MERGE INTO c테이블 USING select 문 d ON (c테이블 조건 = select문 조건) WHEN MATCHED THEN UPDATE 문 WHEN NOT MATCHED THEN INSERT 문 end if; exception when no_data_found then 예외 처리문 end;
제가 질문이라고 작성한것 처럼 insert가 종료후 t_abc변수에 insert했던 값을 확보하여
그 t_acb조건에 따라서 insert하거나 update를 해야하는 로직입니다.
위의 상황처럼 가능한지가 궁금합니다.