LINUX.ORG.RU

История изменений

Исправление stevejobs, (текущая версия) :

выставь максимальный уровень изоляции транзакций (snapshot/serializable/..) в твоей базе данных, и выполняй «проверка+добавление» внутри транзакции

внутри транзакции нужно использовать sql команду, которая позволяет делать атомарный compare-and-swap. Например, начиная с postgresql 9.5 это INSERT ... ON CONFLICT DO NOTHING/UPDATE

Исходная версия stevejobs, :

выставь максимальный уровень изоляции транзакций (snapshot/serializable/..) в твоей базе данных, и выполняй «проверка+добавление» внутри транзакции