I modsætning til kommentarerne er samtidige indsættelser på samme tabel fuldstændigt tilladte i PostgreSQL, så der er en racebetingelse her.
For at gøre dette sikkert skal du have en unique
begrænsning (eller primary key
) på column_name
. Duplikerede indsættelser vil derefter kaste en undtagelse, som du kan fange og prøve igen med en opdatering.
Hvis du ikke har en unik begrænsning, skal du LOCK TABLE ... IN EXCLUSIVE MODE
for at forhindre samtidige opkast. Eller brug en af de samtidighedssikre metoder, der er beskrevet i:
Hvordan UPSERT (FLETT, INDSÆT ... PÅ DUPLIKAT OPDATERING) i PostgreSQL?