sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo hacer que ActiveRecord ThreadSafe

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?