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,该怎么办?每个选择都会在每个查询开始的那一刻看到它自己的快照?