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?