Заблокируйте SELECT, чтобы другой процесс не получил старые данные

У меня есть таблица, которая может иметь два потока, считывающие данные из нее. Если данные находятся в определенном состоянии (скажем, в состоянии 1), тогда процесс что-то сделает (не имеет отношения к этому вопросу), а затем обновит состояние до 2.

Мне кажется, что может быть случай, когда поток 1 и поток 2 оба выполняют выбор в течение микросекунд друг от друга, и оба видят, что строка находится в состоянии 1, а затем оба делают то же самое, и 2 обновления происходят после того, как блокировки имеют был освобожден.

Вопрос заключается в следующем: есть ли способ помешать второму потоку изменить эти данные в Postgres?SELECT после того, как блокировка от первого выпускается для его обновления, чтобы он знал, чтобы спасти, чтобы предотвратить дубли?

Я посмотрел на блокировку строк, но он говорит, что вы не можете запретить операторы select, которые звучат так, как будто это не сработает для моего состояния. Является ли мой единственный вариант использовать консультативные блокировки?

Ответы на вопрос(1)

Ваш ответ на вопрос