UPSERT とは データベースにレコードを反映する際、100%新規データを扱うのであれば、テーブルにINSERTするだけですみます。 更新データも存在する場合、新規の場合は INSERT 、更新の場合は UPDATE というように処理を振り分ける必要があります。 このように、データの状態によって UPDATE と INSERT を使い分けることを、UPDATE と INSERT をくっつけて UPSERT と呼びます。 PostgreSQL は9.5で INSERT を試し、制約違反が発生すれば UPDATE する INSERT ... ON CONFLICT 構文の UPSERT に対応しました。 PostgreSQL 以外にも、MySQLやSQLiteがこの方式のUPSERTに対応しています。 INSERT INTO target(tid, val) VALUES(123, 10)