UPSERT nënkupton "insert, ose update nëse ekziston tashmë." PostgreSQL e zbaton këtë me INSERT ... ON CONFLICT — fut një rresht, por nëse do të shkelte një constraint unik, në vend të kësaj përditëso rreshtin ekzistues (ose mos bëj asgjë). Ai zgjidh nevojën e zakonshme "insert-ose-update" atomikisht.
Problemi që UPSERT zgjidh
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)
