历史版本。 PostgreSQL 7.0 已结束支持。 请参阅 当前版本手册.
13.4. 可串行化隔离级别
可串行化提供最高的事务隔离。当事务使用可串行化级别时,查询只能看到事务开始之前已经提交的数据,既看不到脏数据,也看不到事务执行期间并发事务提交的更改。因此,该级别模拟串行的事务执行,就好像事务是一个接一个串行执行的,而不是并发执行的。
如果查询在执行
UPDATE(或
DELETE 或
SELECT FOR UPDATE)语句时返回的某行,正在被一个并发未提交事务更新,那么试图更新该行的第二个事务会等待另一个事务提交或回滚。若对方回滚,等待的事务可以继续更改该行。若并发事务提交,可串行化事务将被回滚并收到以下消息:
ERROR: Can't serialize access due to concurrent update
因为可串行化事务不能修改在它开始之后被其他事务更改过的行。
注意
注意,SELECT 或(带查询的)INSERT
的执行结果不会受并发事务影响。