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

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

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本PostgreSQL 7.1 已于 2006 年 4 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

SET TRANSACTION

SET TRANSACTION — 设置当前 SQL 事务的特性

大纲

SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
  

描述

这条命令设置事务的隔离级别。SET TRANSACTION 命令设置 当前 SQL 事务的特性。它对任何后续事务都没有影响。这条命令 不能在事务的第一条 DML 语句 (SELECT、INSERT、 DELETE、UPDATE、 FETCH、COPY)已经执行 之后使用。SET SESSION CHARACTERISTICS 设置一个会话中每个事务的默认事务隔离级别。对于单个事务, SET TRANSACTION 可以覆盖它。

事务的隔离级别决定该事务在其他事务 并发运行时能看到哪些数据。

READ COMMITTED

一条语句只能看到在它开始之前已提交的行。这是默认值。

SERIALIZABLE

当前事务只能看到在本事务中第一条 DML 语句 执行之前已提交的行。

提示

直观地说,可串行化意味着两个并发事务给数据库 留下的状态,与这两个事务严格地一个接一个按任一 顺序执行后的状态相同。

兼容性

SQL92, SQL99

SERIALIZABLE 是 SQL 中的默认 级别。Postgres 不提供隔离级别 READ UNCOMMITTED 和 REPEATABLE READ。由于 多版本并发控制,可串行化级别并非 真正的可串行化。细节见 用户指南。

在 SQL 中还有另外两项可以用这些命令设置的 事务特性:事务是否只读以及诊断区域的大小。 这两个概念在 Postgres 中都不受支持。

提交更正

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