http://www.postgresql.org/docs/9.1/static/transaction-iso.html В документации о прочитанном уровне изоляции указано
Read Committed - это уровень изоляции по умолчанию в PostgreSQL. Когда транзакция использует этот уровень изоляции, запрос SELECT (без предложения FOR UPDATE / SHARE) видит только данные, зафиксированные до начала запроса; он никогда не видит ни незафиксированных данных, ни изменений, зафиксированных во время выполнения запроса параллельными транзакциями. Фактически, запрос SELECT видит моментальный снимок базы данных в момент начала выполнения запроса. Однако SELECT видит эффекты предыдущих обновлений, выполненных в рамках его собственной транзакции, даже если они еще не зафиксированы. Также обратите внимание, что две последовательные команды SELECT могут видеть разные данные, даже если они находятся в одной транзакции, если другие транзакции фиксируют изменения во время выполнения первого SELECT.
Последнее предложение меня смущает, что это значит? Что, если у меня есть не 2 выбора в транзакции, а 3, а также несколько вычислений без использования DML между ними? Каждый выбор будет видеть свой снимок в момент начала каждого запроса?