【あっぷさーと】
UPSERT とは?
💡 あれば更新、なければ追加!一石二鳥のお手軽操作
📌 このページのポイント
- INSERT + UPDATEを一つの操作にまとめた便利な仕組み
- データの存在チェックを自分で書かなくてよいので、コードがシンプルになる
- PostgreSQLではON CONFLICT句、MySQLではON DUPLICATE KEY UPDATEで実現
- データ同期やバッチ処理でよく使われる定番テクニック
UPSERTって変わった名前だね!UPDATEとINSERTが合体したのかな?
その通り!UPDATEとINSERTを合わせた造語だよ。データがあれば更新して、なければ新規挿入する、という処理を一つのSQL文で実行できるんだ
普通にIF文で分岐すればいいんじゃないの?
具体的にはどう書くの?
PostgreSQLなら INSERT INTO users (id, name) VALUES (1, '太郎') ON CONFLICT (id) DO UPDATE SET name = '太郎' という感じだよ。MySQLなら ON DUPLICATE KEY UPDATE を使うんだ
どんなときに使うことが多いの?
外部データの定期取り込みや、設定値の保存なんかでよく使うよ。たとえばユーザーのプロフィール更新は「初回は挿入、2回目以降は更新」だから、まさにUPSERTの出番だね
SQLiteでも使えるのかな?
まとめ:ざっくりこれだけ覚えればOK!
「UPSERT」って出てきたら「あれば更新、なければ挿入する便利なDB操作」と思えればだいたいOK!
📖 おまけ:英語の意味
「UPSERT (UPDATE + INSERT)」 = 更新+挿入
💬 UPDATEとINSERTを合体させた造語だよ。どっちも一発でやってくれるんだ