Al contrario de los comentarios, las inserciones simultáneas en la misma tabla están totalmente permitidas en PostgreSQL, por lo que aquí hay una condición de carrera.
Para que esto sea seguro, debe tener un unique
restricción (o primary key
) en column_name
. Las inserciones duplicadas generarán una excepción que puede detectar y volver a intentar con una actualización.
Si no tiene una restricción única, debe LOCK TABLE ... IN EXCLUSIVE MODE
para evitar upserts simultáneos. O use uno de los métodos seguros de concurrencia descritos en:
¿Cómo UPSERT (COMBINAR, INSERTAR... EN ACTUALIZACIÓN DUPLICADA) en PostgreSQL?