选择 打开 改范围 完整检索页

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

文档 / SQL 命令 / 事务控制

SQL COMMAND · 事务控制

START TRANSACTION

开始一个事务块

START事务控制引入 10(基线)现存至 20 devel0 次语法变更

动词
START
对象
TRANSACTION
引入版本
10(基线)
状态
现存
语法变更次数
0
手册小节数
4

本站手册 · 18官方文档 ↗

版本轨迹

相对 PostgreSQL 17 无变化。

语法铁道图 PostgreSQL 18

沿轨道从左向右阅读,分岔表示选择,绕行表示可选,回环表示重复。方框为参数,点击带下划线的参数可展开子规则。

START TRANSACTION transaction_mode ,
transaction_mode
ISOLATION LEVEL SERIALIZABLE REPEATABLE READ READ COMMITTED READ UNCOMMITTED READ WRITE READ ONLY NOT DEFERRABLE

语法概要

START TRANSACTION [ transaction_mode [, ...] ]

其中 transaction_mode 是下列之一:

    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
    READ WRITE | READ ONLY
    [ NOT ] DEFERRABLE

PostgreSQL 18 手册 · 查看完整参考页

描述

该命令开始一个新的事务块。如果指定了隔离级别、读写模式或可延迟模式, 新事务就会具有这些特性,就像执行了 SET TRANSACTION一样。 它与BEGIN命令具有相同功能。

参数

关于本语句参数含义的信息,参见SET TRANSACTION

兼容性

在 SQL 标准中,并不需要发出START TRANSACTION 来开始一个事务块:任何 SQL 命令都会隐式开始一个事务块。 PostgreSQL的行为可以看作是:对每条不跟在 START TRANSACTION(或BEGIN)之后的命令, 都会在其后隐式发出一个COMMIT,因此这种行为通常被称为 自动提交。其他关系型数据库系统也可能为了方便而提供 自动提交特性。

DEFERRABLE 这一 transaction_modePostgreSQL语言扩展。

SQL 标准要求在连续的transaction_modes之间有逗号, 但出于历史原因PostgreSQL允许省略逗号。

另见SET TRANSACTION的兼容性小节。

另见

语法演化

相邻大版本之间的差异,新的在前。版本号链接到对应快照。

  1. 收录以来没有记录到变化。

同组命令

命令动词对象版本变动最近变更
TRANSACTIONS事务控制15 条
ABORTABORT 121 次
中止当前事务现存
BEGINBEGIN
开始一个事务块现存
COMMITCOMMIT 121 次
提交当前事务现存
ENDEND 121 次
提交当前事务现存
ROLLBACKROLLBACK 121 次
中止当前事务现存
SAVEPOINTSAVEPOINT
在当前事务中定义一个新的保存点现存
SET CONSTRAINTSSETCONSTRAINTS
为当前事务设置约束检查时机现存
WAIT FORWAITFOR
等待 WAL 达到目标 LSN现存
COMMIT PREPAREDCOMMITPREPARED
提交一个先前为两阶段提交而预备的事务现存
ROLLBACK PREPAREDROLLBACKPREPARED
回滚一个先前为两阶段提交而预备的事务现存
RELEASE SAVEPOINTRELEASESAVEPOINT
释放一个先前定义的保存点现存
ROLLBACK TO SAVEPOINTROLLBACKTO SAVEPOINT
回滚到一个保存点现存
PREPARE TRANSACTIONPREPARETRANSACTION
为两阶段提交准备当前事务现存
SET TRANSACTIONSETTRANSACTION
设置当前事务的特性现存
START TRANSACTIONSTARTTRANSACTION
开始一个事务块现存