by visca구루비 [SQL Query] merge into merge Trigger 트리거 [2016.03.21 13:45:18]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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되게 트리거를 생성하였습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 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를 해야하는 로직입니다.
위의 상황처럼 가능한지가 궁금합니다.