MySQL 에서 ON DUPLICATE KEY UPDATE 사용시 last_insert_id 값 획득

MySQL에서 Insert, Update를 동시에 할 수 있게 해주는 “ON DUPLICATE KEY UPDATE” 쿼리를 사용할 경우 last_insert_id 결과값을 정상적으로 가져오지 못할 경우가 생기기 마련이다.

이 문제를 해결 하기 위해서는 해당 Table의 컬럼중 “AUTO_INCREMENT” 지정된 컬럼을 가져오면 된다.

쿼리의 예를 들면 다음과 같다.

INSERT INTO test(name, age) VALUES ('이름', '19') ON DUPLICATE KEY UPDATE name='이름', age='19', expr=last_insert_id(idx);

Insert가 실행되고, last_insert_id()를 획득 할 수 있습니다.