MysqlでInsertとUpdateを1度に処理する(ON DUPLICATE KEY UPDATE)
WEBサイトを開発していると、データがないときはINSERT , ある時はUPDATEしたい時があります。そんな時、条件分岐などの処理を書かなくても1度に処理できる方法を紹介します。
使い方
レコード(行)がなかったらINSERTあったらUPDATEという処理を1度に実行します。そのレコードのあるなしを判断するために、primary key や インデックスを指定しておく必要があります。
1 2 3 4 5 6 |
INSERT INTO table (a, b, c) VALUES (1, 10, 100) ON DUPLICATE KEY UPDATE b = 50, c = 150; |
a=1の行がなかった場合
a=1,b=10,c=100 の行が追加
a=1の行が既にあった場合
a=1の行がa=1,b=50,c=150に更新