ORACLE MERGE 조건에 따라 INSERT, UPDATE
ORACLE MERGE 조건에 따라 INSERT, UPDATE
특정 조건의 데이터에 따라 ROW를 INSERT하거나 UPDATE 해야할 때 MERGE를 사용합니다.
예를 들어 테이블에 어떤 값이 존재할 경우에는 UPDATE를 존재하지 않을 경우에는 INSERT를 해야 된다고 할 때
MERGE를 사용하지 않는다면 값을 확인하는 쿼리를 따로 사용했어야 했죠.
하지만 MERGE를 사용하면 하나의 쿼리로 위의 데이터 처리가 가능합니다.
- 사용방법
MERGE INTO TABLE_NAME
USING TABLE/VIEW/SUBQUERY/DUAL
ON CONDITION
WHEN MATCHED THEN
UPDATE문
WHEN NOT MATCHED THEN
INSERT문
예)
MERGE INTO RECORD_INFO
USING DUAL
ON (PLAYER_ID = #{playerId} AND RECORD_YMDHMS = #{recordYmdhms})
WHEN MATCHED THEN
UPDATE SET
RECORD = #{record}
WHEN NOT MATCHED THEN
INSERT (
PLAYER_ID ,
RECORD_YMDHMS,
RECORD
) VALUES (
#{playerId},
#{recordYmdhms},
#{record}
);
RECORD_INFO 테이블에서 PLAYER_ID와 RECORD_YMDHMS가 같은 ROW가 있다면
RECORD 컬럼을 업데이트 하고
없다면
INSERT 하는 예이다.
하나의 테이블만 사용할때는 DUAL 을 사용한다.
이처럼 조건에 따라 UPDATE와 INSERT문을 사용할 때 ORACLE MERGE 문을 사용합니다.