Contrariamente ai commenti, gli inserimenti simultanei sulla stessa tabella sono del tutto consentiti in PostgreSQL, quindi qui c'è una race condition.
Per renderlo sicuro devi avere un unique
vincolo (o primary key
) su column_name
. Gli inserimenti duplicati genereranno quindi un'eccezione che puoi rilevare e riprovare con un aggiornamento.
Se non hai un vincolo univoco, devi LOCK TABLE ... IN EXCLUSIVE MODE
per prevenire rialzi simultanei. Oppure usa uno dei metodi sicuri per la concorrenza descritti in:
Come eseguire l'UPSERT (MERGE, INSERT... SU AGGIORNAMENTO DUPLICATO) in PostgreSQL?