MySQL : INSERT ON DUPLICATE KEY UPDATE 에서 autoincrease되는 id 문제

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 퀴리는 에러를 발생시키지 않으려나 하는 점이지만. 잘 된다는 댓글들을 봐서는 문제 없는 것 같다.

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.