트리거생성 merge into 질문드립니다. 0 0 3,874

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를 해야하는 로직입니다.

 

위의 상황처럼 가능한지가 궁금합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입