SQL COMMAND · 事务控制
START TRANSACTION
开始一个事务块
start a transaction block
START事务控制引入 7.3现存至 20 devel4 次语法变更
- 动词
START- 对象
TRANSACTION- 分组
- 事务控制
- 引入版本
- 7.3
- 状态
- 现存
- 语法变更次数
- 4
- 手册小节数
- 4
版本轨迹
相对 PostgreSQL 17 无变化。
语法铁道图 PostgreSQL 18
沿轨道从左向右阅读,分岔表示选择,绕行表示可选,回环表示重复。方框为参数,点击带下划线的参数可展开子规则。
transaction_mode
语法概要
START TRANSACTION [ transaction_mode [, ...] ] 其中 transaction_mode 是下列之一: ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED } READ WRITE | READ ONLY [ NOT ] DEFERRABLE
描述
该命令开始一个新的事务块。如果指定了隔离级别、读写模式或可延迟模式,新事务就会具有这些特性,就像执行了
SET TRANSACTION 一样。它与 BEGIN 命令具有相同功能。
参数
关于本语句参数含义的信息,参见 SET TRANSACTION。
兼容性
在 SQL 标准中,并不需要发出 START TRANSACTION
来开始一个事务块:任何 SQL 命令都会隐式开始一个事务块。PostgreSQL 的行为可以看作是:对每条不跟在
START TRANSACTION(或 BEGIN)之后的命令,都会在其后隐式发出一个 COMMIT,因此这种行为通常被称为“自动提交”。其他关系型数据库系统也可能为了方便而提供自动提交特性。
DEFERRABLE
transaction_mode
是 PostgreSQL 的一种语言扩展。
SQL 标准要求在连续的 transaction_modes 之间有逗号,但出于历史原因,PostgreSQL 允许省略逗号。
另见 SET TRANSACTION 的兼容性小节。
另见
语法演化
相邻大版本之间的差异,新的在前。版本号链接到对应快照。
PostgreSQL 10← 9.6正文更新
正文更新PostgreSQL 9.1← 9.0语法变化
+ [ NOT ] DEFERRABLE正文更新PostgreSQL 9.0← 8.4语法变化
− where transaction_mode is one of:PostgreSQL 8.3← 8.2正文更新
正文更新PostgreSQL 8.0← 7.4语法变化
+ START TRANSACTION [ transaction_mode [, ...] ]+ where transaction_mode is one of:+ ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }− START TRANSACTION [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]正文更新PostgreSQL 7.4← 7.3语法变化
+ START TRANSACTION [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]正文更新PostgreSQL 7.3← 7.2新增此命令
同组命令
| 命令 | 动词 | 对象 | 版本变动 | 最近变更 |
|---|---|---|---|---|
ABORT | ABORT | — | 123 次 | |
| 中止当前事务 | 现存 | |||
BEGIN | BEGIN | — | 9.13 次 | |
| 开始一个事务块 | 现存 | |||
COMMIT | COMMIT | — | 121 次 | |
| 提交当前事务 | 现存 | |||
END | END | — | 121 次 | |
| 提交当前事务 | 现存 | |||
ROLLBACK | ROLLBACK | — | 122 次 | |
| 中止当前事务 | 现存 | |||
SAVEPOINT | SAVEPOINT | — | — | |
| 在当前事务中定义一个新的保存点 | 现存 | |||
WAIT | WAIT | — | — | |
| 等待 WAL 达到目标 LSN | 现存 | |||
SET CONSTRAINTS | SET | CONSTRAINTS | 7.41 次 | |
| 为当前事务设置约束检查时机 | 现存 | |||
COMMIT PREPARED | COMMIT | PREPARED | — | |
| 提交一个先前为两阶段提交而预备的事务 | 现存 | |||
ROLLBACK PREPARED | ROLLBACK | PREPARED | — | |
| 回滚一个先前为两阶段提交而预备的事务 | 现存 | |||
RELEASE SAVEPOINT | RELEASE | SAVEPOINT | — | |
| 释放一个先前定义的保存点 | 现存 | |||
ROLLBACK TO SAVEPOINT | ROLLBACK | TO SAVEPOINT | — | |
| 回滚到一个保存点 | 现存 | |||
PREPARE TRANSACTION | PREPARE | TRANSACTION | — | |
| 为两阶段提交准备当前事务 | 现存 | |||
SET TRANSACTION | SET | TRANSACTION | 9.25 次 | |
| 设置当前事务的特性 | 现存 | |||
START TRANSACTION | START | TRANSACTION | 9.14 次 | |
| 开始一个事务块 | 现存 | |||
BEGIN WORK | BEGIN | WORK | — | |
| 开始一个事务 | 于 6.5 移除 | |||