似たような処理にreplaceがあるが、 replaceはレコード(行)を丸ごと入れ替える(delete/insert)のに対し、 upsertはカラムを指定してレコードを更新する。 SQLite3 でレコードがあれば置換、なければ新規挿入する (replace) 公式 によると PostgreSQL の構文を利用しているとのこと。 Microsoft SQLServer や Oracle の「merge(マージ)」構文に近い使い方だが mergeは重複の判定にUniqueカラム以外のものを指定できたりする。 実行例 「upsert」というコマンドがあるわけではなく、 on conflict文を使い キーが重複した場合の処理を指定することができる。 on conflict文は sqlite のバージョン3.24.0 から利用可能。 環境 Windows 10 sqlite3 (3.24.0