Антон Антон, даже если и сработает, это не закроет мою задачу. Мне нужно, чтобы пока не выполнится моя транзакция, где я сделал FOR UPDATE, никакой другой запрос не мог прочитать запись. Это нужно, чтобы исключить параллельное выполнение финансовых операций.
Читаю за пределами транзакции отдельным параллельным запросом. Пока транзакция выполняется, мне возвращается предыдущее значение, когда выполнится - новое.
Идея в том, что мне нужно запретить всем остальным параллельным запросам получать баланс пользователя, пока не выполнится эта транзакция. В теории (если я правильно понял документацию) FOR UPDATE должен залочить запись, но этого не происходит. Странно еще что я другими средствами не могу ничего залочить.
Уровни изоляции тоже никак не помогают. Если я правильно понял документацию, то до апдейта или до завершения транзакции запись должна быть залочена от чтения. Но я могу параллельно ее получить селектом с любым уровнем изоляции, и с for update.