Учитывая этот сценарий:
TIME TRANSACTION 1 TRANSACTION 2
1sec BEGIN
2sec INSERT RECORDS INTO T1
3sec (doing other things) BEGIN
4sec (doing other things) (doing other things)
5sec COMMIT (doing other things)
6sec SELECT * FROM T1 <<- GETS ROWS INSERTED BY T1
Согласно документам postgres:
Также обратите внимание, что две последовательные команды SELECT могут видеть разные данные, даже если они находятся в одной транзакции, если другие транзакции фиксируют изменения во время выполнения первой команды SELECT.
Вопрос в том, как избежать SELECT
фиксации строк между началом транзакции и началом запроса.