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는 현재시간으로 업데이트
아래에서 주목해야할 점은 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>
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 |