pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
SET TRANSACTION — 设置当前事务的特性
SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL
{ READ COMMITTED | SERIALIZABLE }
这条命令设置事务的隔离级别。SET TRANSACTION 命令设置 当前 SQL 事务的特性。它对任何后续事务都没有影响。这条命令 不能在事务的第一条查询或数据修改语句 (SELECT、INSERT、 DELETE、UPDATE、 FETCH、COPY)已经执行 之后使用。SET SESSION CHARACTERISTICS 设置一个会话中每个事务的默认事务隔离级别。对于单个事务, SET TRANSACTION 可以覆盖它。
事务的隔离级别决定该事务在其他事务 并发运行时能看到哪些数据。
一条语句只能看到在它开始之前已提交的行。这是默认值。
当前事务只能看到在本事务中第一条查询或数据修改语句 执行之前已提交的行。
直观地说,可串行化意味着两个并发事务给数据库 留下的状态,与这两个事务严格地一个接一个按任一 顺序执行后的状态相同。
会话默认的事务隔离级别也可以用命令
SET default_transaction_isolation = 'value'
以及在 配置文件中设置。更多信息请参考 管理员指南。
SERIALIZABLE 是 SQL 中的默认 级别。PostgreSQL 不提供 隔离级别 READ UNCOMMITTED 和 REPEATABLE READ。由于 多版本并发控制,可串行化级别并非 真正的可串行化。细节见 用户指南。
在 SQL 中还有另外两项可以用这些命令设置的 事务特性:事务是否只读以及诊断区域的大小。 这两个概念在 PostgreSQL 中都 不受支持。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。