MERGE INTO 쿼리를 이용하면 Update나 Insert를 하기 위해 해당 데이타가 존재하는지 확인하기 위해 따로 Select를 하지 않아도 됩니다.
데이타가 존재하는지 알아서 판단해서 Update이나 Insert를 실행하기 때문이죠.
저도 그 편리함 때문에 종종 MERGE INTO를 사용합니다.
MERGE INTO 테이블명
USING DUAL
ON ( 조인조건 )
WHEN MATCHED
THEN
UPDATE 문
WHEN NOT MATCHED
THEN
INSERT 문
USING DUAL
ON ( 조인조건 )
WHEN MATCHED
THEN
UPDATE 문
WHEN NOT MATCHED
THEN
INSERT 문
쿼리는 위와 같이 구성이 됩니다.
조인조건에 해당하는 데이타가 있는지 확인해서 Update 또는 Insert를 실행하게 됩니다.
아래 예제를 보면 어떻게 사용하는지 명확하게 알 수 있습니다.
MERGE INTO TB_USER
USING DUAL
ON (USER_ID = 'zzznara')
WHEN MATCHED
THEN
UPDATE
SET UPDATE_USER = 'admin',
UPDATE_DATE = SYSDATE,
DEPT_CODE = 'D20',
USER_ID = 'zzznara2'
WHEN NOT MATCHED
THEN
INSERT (
ID,
CREATE_USER,
CREATE_DATE,
DEPT_CODE,
USER_ID
)
VALUES (
'MX20394203957K0303A',
'admin',
SYSDATE,
'D20',
'zzznara2'
)