UPSERT tegese "insert, utawa ngapdate yen wis ana." PostgreSQL nglaksanaake iki karo INSERT ... ON CONFLICT — insert baris, nanging yen bakal langgar unique constraint, malah ngapdate baris sing ana (utawa ora nindakake apa-apa). Iki ngatasi kabutuhan umum "insert-utawa-update" kanthi atomik.
Masalah sing diatalake UPSERT
You want to insert a row, but it might already exist (by a unique key):
❌ a plain INSERT fails with a unique-violation error if it exists
❌ check-then-insert (SELECT, then INSERT or UPDATE) has a RACE CONDITION
(another transaction could insert between your check and insert)
→ ON CONFLICT does it atomically in ONE statement (no race condition)
