読者です 読者をやめる 読者になる 読者になる

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)