조건에 해당하는 데이터가 있으면 수정하고 없으면 입력하는 구문
MERGE INTO 테이블 A : 입력 또는 수정되는 테이블
USING (SELECT 컬럼1 : 입력 또는 수정할 데이터가 들어있는 테이블
, 컬럼2 : 자기 자신의 테이블이면 DUAL 사용 가능
, 컬럼3
, ......
FROM 테이블
WHERE 조건
) B
ON ( A.컬럼1 = B.컬럼1 : UPDATE, INSERT를 결정하는 조건문
AND A.컬럼2 = B.컬럼2 : ON절에 사용한 컬럼은 UPDATE 불가
........
)
WHEN MATCHED THEN : ON절의 조건에 해당하는 데이터가 있으면 UPDATE
UPDATE SET
A.컬럼3 = B.컬럼3
, A.컬럼4 = B.컬럼4
, A.컬럼5 = B.컬럼5
, ........
WHEN NOT MATCHED THEN : ON절의 조건에 해당하는 데이터가 없으면 INSERT
INSERT (A.컬럼1, A.컬럼2, ......)
VALUES (B.컬럼1, B.컬럼2, ......)
;
예)
MERGE INTO TEST_COPY A
USING (SELECT TST_NO
, COL_MODIFY
, RGST_ID
, RGST_DT
FROM TEST
WHERE 1=1
) B
ON (A.TST_NO = B.TST_NO)
WHEN MATCHED THEN
UPDATE SET
A.COL_MODIFY = B.COL_MODIFY
, A.RGST_ID = B.RGST_ID
, A.RGST_DT = B.RGST_DT
WHEN NOT MATCHED THEN
INSERT (A.TST_NO, A.COL_MODIFY, A.RGST_ID, A.RGST_DT)
VALUES (B.TST_NO, B.COL_MODIFY, B.RGST_ID, SYSDATE)