spring of life

技術、ときどき日常のブログ(予定)

INSERT時の重複エラー対応

PRIMARY KEYやUNIQUEキーが重複してエラーが出る場合の対処方法

ON DUPLICATE KEY UPDATE を使う

これは前から知ってたんだけど

INSERT INTO hoge
  (a, b, c)
VALUES
  (1, 2, 3)
ON DUPLICATE KEY UPDATE
  a = VALUES(a),
  b = VALUES(b),
  c = VALUES(c);

みたいな感じで書くと重複している場合は更新してくれる

ただ、auto_increment のキーが設定されていると、update された場合にインクリメントされるらしい?

IGNORE を使う

これが今回新しく知ったやつで、挿入もせず(インクリメントなし)エラーも発生しないようになる

INSERT IGNORE INTO hoge
  (a, b, c)
VALUES
  (1, 2, 3)