mysqlでupsertを実装する方法
mysql 8.0.19
ORM使っているとupsertは比較的簡単に実装できるのですが、生のsqlで書く機会があったので備忘録として残しておきます
stocksテーブル
menu_name(PK) | stock_number |
varchar | int |
INSERT INTO stocks(menu_name, stock_number)
VALUES('ナポリタン', 10)
ON DUPLICATE KEY
UPDATE
stock_number = stock_number + 10;
例えば上記のように、メニュー名が主キーのstocksテーブルに、ナポリタンの在庫を挿入する場合、ナポリタンというメニュー名のレコードが存在していなければinsertを行い、存在していればupdateするというupsert処理が実現できます。
※エスケープ処理等は自前で記述してね。
コメント