MySQLでupsertは標準機能で出来た(ON DUPLICATE KEY UPDATE)。mysql 4.1.0以降からあったのか…。知らんかった!!

MySQLでupsertは標準機能で出来た(ON DUPLICATE KEY UPDATE)。mysql 4.1.0以降からあったのか…。知らんかった!!


本の情報を管理するテーブル作成

最初に存在チェックをした後に、INSERTするかUPDATEするかしないとダメ

ON DUPLICATE KEY UPDATEを使えば、SQL1回発行するだけでUPSERT出来る(前半はINSERT文で、キーが重複していたら値を更新する)

※あまりないと思うけど、INSERTする時にユニークキーを含まないと複数行ヒットしてしまう。
UPDATEみたいに全更新はされずに、1行だけ更新らしい。

今まではPHPとかで処理分けしていたけど、こんな単純なSQLで実現できたんだ…。

【追記】
upsertの更新キーは、暗黙的に決まるらしい。
1, プライマリキーが同一である
2, ユニークキー(複合ユニークでも可)が同一である

片方or両方が一緒なら、同じレコードとmysqlが勝手に判断するらしい。