минимальным значением с столбце count и увеличить этот count а 1?
Сейчас есть вот такой запрос
UPDATE table
SET count = count + 1
WHERE id = (SELECT id FROM table ORDER BY count LIMIT 1)
RETURNING *;
Но когда его вызывают одновременно из 20 потоков, то некоторые записи выбираются дважды. То есть подзапрос возвращает один и тот же id, так как он еще не обновился.
Как это можно исправить? Мне надо что бы возвращалась всегда та запись у которой count меньше всего и тут же count увеличивался. Как это сделать безопасно в плане многопоточности?
Postgresql
Синхронизировать запросы к базе в этом месте
а как это сделать, если это разные апликейшены которые запущены на разных серверах?
count(*) + 1
Выполнять запрос на уровне изоляции serializable
Обсуждают сегодня