PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como fazer o ActiveRecord ThreadSafe


Ao contrário dos comentários, inserções simultâneas na mesma tabela são totalmente permitidas no PostgreSQL, então há uma condição de corrida aqui.

Para tornar isso seguro, você deve ter um unique restrição (ou primary key ) em column_name . Inserções duplicadas lançarão uma exceção que você pode capturar e tentar novamente com uma atualização.

Se você não tiver uma restrição exclusiva, deverá LOCK TABLE ... IN EXCLUSIVE MODE para evitar upserts simultâneos. Ou use um dos métodos seguros de simultaneidade descritos em:

Como UPSERT (MERGE, INSERT ... ON DUPLICATE UPDATE) no PostgreSQL?