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 문을 사용합니다.
'Database > SQL' 카테고리의 다른 글
오라클 Oracle 가장큰값, 두번째 큰값, 가장작은값, 두번째로 작은값 구하기 GREATEST, LEAST (0) | 2015.11.25 |
---|---|
ORACLE LISTAGG 여러 행을 하나의 컬럼으로 가져오기 (0) | 2015.08.19 |
오라클 두 테이블의 컬럼에서 같은 값 확인 ORACLE DECODE 활용 (0) | 2015.08.05 |
MySQL 문자열 합치기, 문자열 결합 CONCAT (0) | 2014.06.24 |
MySQL 바이너리 로그를 활용한 DB 복구 방법 in Windows (0) | 2014.06.12 |
댓글