https://stackoverflow.com/questions/9189102/too-many-auto-increments-with-on-duplicate-key-update
INSERT … ON DUPLICTE KEY UPDATE 는 굉장히 유용한 구문이나, 오늘 보니까 duplicate 여부를 확인하는 과정에서 쓸데없이 autoincrease를 걸어둔 primary key가 높아지는 것을 발견했다. 즉 1,2,3…잘가다가 갑자기 3만번대로 점프. DB architechure의 문제로 생각된다.
위 링크에 좋은 예제가 있어 남겨둔다. 트렌젝션을 이용해서
START TRANSACTION ;
UPDATE pages
SET etc = 'randomness'
WHERE name = 'bob' ;
INSERT INTO pages (name, etc)
SELECT
'bob' AS name
, 'randomness' AS etc
FROM dual
WHERE NOT EXISTS
( SELECT *
FROM pages p
WHERE p.name = 'bob'
) ;
COMMIT ;
다음과 같이 하면 된다.
다만 궁금한 것은 등록되지 않은 상태에서 UPDATE 퀴리는 에러를 발생시키지 않으려나 하는 점이지만. 잘 된다는 댓글들을 봐서는 문제 없는 것 같다.