START TRANSACTION — 开始一个事务块
START TRANSACTION [transaction_mode[, ...] ] wheretransaction_modeis one of: ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED } READ WRITE | READ ONLY [ NOT ] DEFERRABLE
该命令开始一个新的事务块。如果指定了隔离级别、读/写模式或者可延迟模式,新事务就会具有那些特性,就像执行过 SET TRANSACTION 一样。这与 BEGIN 命令相同。
有关该语句各参数含义的信息,请参考 SET TRANSACTION。
在标准中,并不需要发出 START TRANSACTION 来开始一个事务块:任何 SQL 命令都会隐式地开始一个块。PostgreSQL 的行为可以被看作是在每个命令之后都隐式地发出一个 COMMIT,只要该命令并非跟在 START TRANSACTION(或 BEGIN)之后,因此它常被称为“自动提交”。为了方便起见,其他关系数据库系统也可能提供自动提交特性。
DEFERRABLE transaction_mode 是一种 PostgreSQL 语言扩展。
SQL 标准要求连续的 transaction_modes 之间用逗号分隔,但出于历史原因,PostgreSQL 允许省略这些逗号。
另请参见 SET TRANSACTION 的兼容性一节。