Ответ
По умолчанию в PostgreSQL используется уровень изоляции READ COMMITTED. Это означает, что транзакция видит только те данные, которые были зафиксированы до начала её выполнения. Если другие транзакции изменяют данные и фиксируют их во время выполнения текущей транзакции, повторное чтение этих данных в рамках одной транзакции может вернуть новые значения.
Пример:
BEGIN;
-- Уровень изоляции READ COMMITTED (по умолчанию)
SELECT * FROM users WHERE id = 1;
-- Другая транзакция изменяет и коммитит данные
SELECT * FROM users WHERE id = 1; -- Может вернуть другие данные
COMMIT;