STERFIELD

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

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

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

著者近影

スターフィールド編集部

SHARE

合わせて読みたい