Database/SQL

ORACLE MERGE 조건에 따라 INSERT, UPDATE

리커니 2015. 8. 19. 09:12
반응형

 

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 문을 사용합니다.

 

반응형