↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 7.0 / 6.3
历史版本PostgreSQL 7.0 已于 2005 年 5 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

13.7. 应用级别的数据一致性检查

由于 Postgres 中的读操作不加锁(无论事务隔离级别如何),一个事务读取的数据仍可能被另一个事务覆盖。换句话说,某行被 SELECT 返回,并不意味着该行在返回的那一刻(即语句或事务开始之后的某个时刻)确实存在,也不意味着该行在当前事务提交或回滚之前受到保护、不会被并发事务删除或更新。

要确保某一行确实存在,并保护它不受并发更新影响,就必须使用 SELECT FOR UPDATE 或适当的 LOCK TABLE 语句。把使用可串行化模式的应用从其他环境移植到 Postgres 时,应当考虑这一点。

注意

在 6.5 版之前,Postgres 使用的是读锁,因此从较早的 Postgres 版本升级到 6.5(或更高)时,上述考虑同样适用。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。