2012-11-03

DB] DB2에서 merge into 사용


merge 문장의 문법 :

merge into tableA  a
using (
select * from tableB
) b
  on (   a.aaa = b.bbb  --// 조회 조건.
     )
 when matched then
                      update 문장. <== tableA에 업데이트할 항목 나열
when not matched then
                      insert 문장.   <== tableA에 insert 할 항목 나열.
else ignore;


설명 :
 merge into 문장은 insert / update 작업을 한번에 할 수 있는 장점이 있는 sql 구문이다.
그러나, 사용상 주의점은 b 로 묶인 select 문장의 조회 결과가 없는 경우, when 조건절에 걸리지 않는 상황이 발생하는걸 경험했다.


현재까지의 결론.
 1. merge into 는 tableA 에 대해 insert / update 작업을 한번에 수행한다. 
    단, a.aaa = b.bbb 가 일치하는 항목에 대해.
 2. merge into 는 "select * from tableB" 에서 조회 결과가 없으면 when ... 을 무시한다. 
    결과적으로 else ignore 가 실행되는 듯 하다. 


댓글 없음:

댓글 쓰기