1,049 バイト追加,
2020年5月14日 (木) 15:11 '''UPSERT'''(読み:あっぷさーと)とは、[[SQL]]において「レコードがなければINSERT、あればUPDATE」という処理のこと指す英語である。
== 概要 ==
INSERT or UPDATEは非常に煩雑な処理である。
# トランザクション開始
# SELECT実行(+行ロック)
## レコードなければINSERT
## レコードがあればUPDATE
# トランザクション終了
== サーバーでの実装 ==
ここ最近のデータベースサーバーでは[[SQL]]を独自拡張してUPSERTを1行で書けるようにしているものもある。
=== SQL Server ===
MERGE命令
=== MySQL ===
INSERT ... ON DUPLICATE KEY UPDATE 構文
* https://dev.mysql.com/doc/refman/5.6/ja/insert-on-duplicate.html
== ORMでの実装 ==
ここ最近のマイクロORMなんかでは、標準でUPSERT命令を搭載し、煩雑な[[ソースコード]]を回避できるようにしているものも多い。ほとんどのものはサーバーがUPSERT系命令を持っていなくても利用できる。