pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
由于 Postgres 中的读操作不加锁(无论事务隔离级别如何),一个事务读取的数据仍可能被另一个事务覆盖。换句话说,某行被 SELECT 返回,并不意味着该行在返回的那一刻(即语句或事务开始之后的某个时刻)确实存在,也不意味着该行在当前事务提交或回滚之前受到保护、不会被并发事务删除或更新。
要确保某一行确实存在,并保护它不受并发更新影响,就必须使用 SELECT FOR UPDATE 或适当的 LOCK TABLE 语句。把使用可串行化模式的应用从其他环境移植到 Postgres 时,应当考虑这一点。
在 6.5 版之前,Postgres 使用的是读锁,因此从较早的 Postgres 版本升级到 6.5(或更高)时,上述考虑同样适用。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。