I motsats till kommentarerna är samtidiga insättningar på samma bord helt tillåtna i PostgreSQL, så det finns ett tävlingsvillkor här.
För att göra detta säkert måste du ha en unique
begränsning (eller primary key
) på column_name
. Dubbletter kommer då att skapa ett undantag som du kan fånga och försöka igen med en uppdatering.
Om du inte har en unik begränsning måste du LOCK TABLE ... IN EXCLUSIVE MODE
för att förhindra samtidiga uppror. Eller använd en av de samtidighetssäkra metoderna som beskrivs i:
Hur man UPSERT (SAMMANFAR, INFOGA ... PÅ DUBLIKAT UPPDATERING) i PostgreSQL?