In tegenstelling tot de opmerkingen zijn gelijktijdige invoegingen op dezelfde tafel volledig toegestaan in PostgreSQL, dus hier is sprake van een race-conditie.
Om dit veilig te maken moet je een unique
. hebben beperking (of primary key
) op column_name
. Dubbele invoegingen zullen dan een uitzondering genereren die u kunt opvangen en opnieuw kunt proberen met een update.
Als u geen unieke beperking heeft, moet u LOCK TABLE ... IN EXCLUSIVE MODE
om gelijktijdige ups te voorkomen. Of gebruik een van de gelijktijdige veilige methoden die worden beschreven in:
Hoe UPERT (MERGE, INSERT ... ON DUPLICATE UPDATE) in PostgreSQL?