INSERT, UPDATE, DELETE를 한꺼번에 수행하는 SQL문
MERGE의 문법은 대략적으로 다음과 같다.
MERGE INTO USING ON
MERGE INTO target_table t
USING source_table s
ON (t.id = s.id) -- 조인조건
WHEN MATCH THEN
UPDATE SET t.val1 = s.val1 * 1.1
DELETE WHERE s.flag = 'd'
WHEN NOT MATCH THEN
INSERT (t.val2, t.val3) VALUES(s.val2,s.val3);
위 작업을 여러개의 insert, update, delete 문을 통해 실행할 수 있지만, MERGE문을 사용함으로서 실행 계획도 줄이고, io를 줄이면서 더 깔끔하고 성능 좋은 SQL을 작성할 수 있다.
이미 target_table과 source_table이 기술되어 있으므로 insert/update/delete를 할 때 테이블 기술을 생략하고 약어로 데이터를 기술한다.