UPSERT yana nufin "saka, ko sabunta idan ya kasance." PostgreSQL yana aiwatar da haka tare da INSERT ... ON CONFLICT — saka jeri, amma idan zai sace wata daidaiciyar ƙunshi, a badal da haka sabunta jerin da ke akwai (ko kada aiki). Yana lissaftar buhari na "saka-ko-sabunta" ta hanyar sauri.
Matsalar da UPSERT ke warware
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)
