START TRANSACTION
Name
START TRANSACTION -- 开始一个事务块
Synopsis
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获取有关这个语句参数含义的信息。
兼容性
在标准里,没必要声明START TRANSACTION
来开始一个事务块: 任何 SQL 语句都隐含地开始一个事务块。PostgreSQL 的行为可以认为是隐含地在每条没有跟在START TRANSACTION
或BEGIN
后面的命令自动发出一条COMMIT
,因此这个行为常被称作"自动提交"。 其它关系数据库系统可能也提供自动提交这一方便的特性。
DEFERRABLE
_transaction_mode_
是一个PostgreSQL语言扩展。
SQL 标准要求在相连的_transaction_modes_
之间有逗号,但是出于历史原因,PostgreSQL允许省略这个逗号。
又见SET TRANSACTION的兼容性小节。