Na rozdíl od komentářů jsou souběžné vkládání ve stejné tabulce v PostgreSQL zcela přípustné, takže zde existuje sporná podmínka.
Aby to bylo bezpečné, musíte mít unique
omezení (nebo primary key
) na column_name
. Duplicitní vložení pak vyvolá výjimku, kterou můžete zachytit a zkusit to znovu pomocí aktualizace.
Pokud nemáte jedinečné omezení, musíte LOCK TABLE ... IN EXCLUSIVE MODE
aby se zabránilo souběžným výtržnostem. Nebo použijte jednu ze souběžně bezpečných metod popsaných v:
Jak UPSERT (SLOUČIT, VLOŽIT ... PŘI DUPLIKÁCI AKTUALIZACE) v PostgreSQL?