UPSERT ciallaíonn sé "cuir isteach, nó nuashonraigh má bhíonn sé ann cheana féin." Cuirtear an fheidhm seo i bhfeidhm ag PostgreSQL le INSERT ... ON CONFLICT — cuir isteach sraith, ach má bhriseadh sé srian uathúil, déan nuashonrú ar an sraith atá ann cheana (nó ná déan tada). Láimhdeálann sé an ngá coitianta "cuir isteach-nó-nuashonraigh" go geal.
An fhadhb a réitíonn 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)
