Blog

MysqlでInsertとUpdateを1度に処理する(ON DUPLICATE KEY UPDATE)

2014.08.05Cat:MySQL プログラマー

WEBサイトを開発していると、データがないときはINSERT , ある時はUPDATEしたい時があります。そんな時、条件分岐などの処理を書かなくても1度に処理できる方法を紹介します。

使い方

レコード(行)がなかったらINSERTあったらUPDATEという処理を1度に実行します。そのレコードのあるなしを判断するために、primary key や インデックスを指定しておく必要があります。

 

a=1の行がなかった場合

a=1,b=10,c=100 の行が追加

a=1の行が既にあった場合

a=1の行がa=1,b=50,c=150に更新

 注意点

  • テーブルにprimary keyか、uniqueインデックスを指定しておかなければ ON DUPLICATE KEY UPDATE は利用できません。
  • primary key uniqueインデックスが複数行に一致する場合、MySQL は1行のみ更新されます。
  • ON DUPLICATE KEY UPDATE は MySQL の拡張であり、他のデータベースでは利用できません。

Author Profile

  • Launch Cart次世代ECサイト構築システム 初期月額無料
  • LaunchMovie ECに特化した動画制作サービス

Archive

ページTOPへ