REPLACE INTOとINSERT ON DUPLICATE KEY UPDATEの違い

このエントリーをはてなブックマークに追加
はてなブックマーク - REPLACE INTOとINSERT ON DUPLICATE KEY UPDATEの違い
LINEで送る
Pocket

概要

MySQLの独自拡張であるREPLACE INTOとINSERT … ON DUPLICATE KEY UPDATEが似ている挙動しているので実験してみた。on MySQL 5.1

参考資料

12.2.6. REPLACE 構文
12.2.4.3. INSERT … ON DUPLICATE KEY UPDATE 構文
INSERT IGNORE

http://d.hatena.ne.jp/IT7C/20100715/1279148768

実行例

テーブル作成&初期データ投入

insert intoで更新。行は追加されない。

replace intoで更新。キー指定されているカラムが重複すると行が追加される。

まとめ

  • 既に重複するカラムのレコードがあった場合の挙動が違う
  • insert … on duplicate key: 行がupdateされる
  • replace into … : 行がdeleteされて、insertされる
  • マスタデータの更新にこれらの構文が使ったら便利な構文みたい。
  • 振る舞いが違うから、設計方針に合った構文を使うこと。
このエントリーをはてなブックマークに追加
はてなブックマーク - REPLACE INTOとINSERT ON DUPLICATE KEY UPDATEの違い
LINEで送る
Pocket

matsubokkuri

Please feel free to contact me via e-mail, twitter and facebook!

あわせて読みたい

コメントを残す