鉴于这种情况:
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
在事务开始和查询开始之间提交行。