My Space

반응형

MySql에서의 ON DUPLICATE는 오라클의 MERGE INTO와 비슷하다.

 

insert시 키값이 중복되면 해당 키값에 대해 update가 동작하게 된다.

 

INSERT INTO TEST (TITLE, SUBJECT, CONTENT) VALUES (#{title}, #{subject}, #{content})
ON DUPLICATE KEY UPDATE STATE = 1, MOD_TSP = NOW();

# 중복되는 키가 존재할 경우, state=1, mod_tsp는 현재시간으로 업데이트

 

다중 insert시 update처리 foreach

아래에서 주목해야할 점은 values 부분이다

ON DUPLICATE KEY UPDATE VALUE = values(value)  

foreach로 컬렉션 안에서는 item. 으로 루프돌려서 값을 가져오는데

duplicate update에서는 item이 지역변수라 사용 불가능하다.

이럴땐, values()로 가져올 수 있다.

<insert id="insertOrUpdate" parameterType="param">
INSERT INTO TABLE (ID, TYPE, VALUE)
VALUES 
<foreach collection="boards" item="item" separator=",">
(#{id}, #{item.type}, #{item.value})
</foreach>
ON DUPLICATE KEY UPDATE VALUE = values(value)
</insert>

 

'Development > DB' 카테고리의 다른 글

MySQL auto_increment 값 변경  (0) 2022.01.11
EXISTS, NOT EXISTS 사용  (0) 2021.11.22
오라클 Keep 함수  (0) 2021.07.11
계층형 쿼리  (0) 2021.05.09
오라클 테이블 목록, 테이블정의서 추출쿼리  (0) 2021.04.28

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading