Противно на коментарите, едновременните вмъквания в една и съща таблица са напълно допустими в PostgreSQL, така че тук има условие за състезание.
За да направите това безопасно, трябва да имате unique
ограничение (или primary key
) на column_name
. След това дублираните вмъквания ще хвърлят изключение, което можете да уловите и да опитате отново с актуализация.
Ако нямате уникално ограничение, тогава трябва да LOCK TABLE ... IN EXCLUSIVE MODE
за предотвратяване на едновременни качвания. Или използвайте един от безопасните за едновременност методи, описани в:
Как да UPSERT (ОБЛИВАНЕ, ВМЪКВАНЕ ... ПРИ ДУБЛИРАНА АКТУАЛИЗАЦИЯ) в PostgreSQL?