mysqlでupsertを実装する方法

mysqlでupsertを実装する方法

mysql 8.0.19

ORM使っているとupsertは比較的簡単に実装できるのですが、生のsqlで書く機会があったので備忘録として残しておきます

stocksテーブル

menu_name(PK)stock_number
varcharint
INSERT INTO stocks(menu_name, stock_number)
VALUES('ナポリタン', 10)
ON DUPLICATE KEY
UPDATE
stock_number = stock_number + 10;

例えば上記のように、メニュー名が主キーのstocksテーブルに、ナポリタンの在庫を挿入する場合、ナポリタンというメニュー名のレコードが存在していなければinsertを行い、存在していればupdateするというupsert処理が実現できます。

※エスケープ処理等は自前で記述してね。

コメント

タイトルとURLをコピーしました