================= START TRANSACTION ================= .. container:: refentry :name: SQL-START-TRANSACTION .. container:: titlepage .. container:: refnamediv .. rubric:: START TRANSACTION :name: start-transaction START TRANSACTION — 开始一个事务块 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis START TRANSACTION [ transaction_mode [, ...] ] 其中 transaction_mode 是下列之一: ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED } READ WRITE | READ ONLY [ NOT ] DEFERRABLE .. container:: refsect1 :name: id-1.9.3.179.5 .. rubric:: 描述 :name: 描述 这个命令开始一个新的事务块。如果指定了隔离级别、读写模式 或者可延迟模式,新的事务将会具有这些特性,就像执行了 `SET TRANSACTION `__\ 一样。这和 `BEGIN `__\ 命令一样。 .. container:: refsect1 :name: id-1.9.3.179.6 .. rubric:: 参数 :name: 参数 这些参数对于这个语句的含义可参考 `SET TRANSACTION `__\ 。 .. container:: refsect1 :name: id-1.9.3.179.7 .. rubric:: 兼容性 :name: 兼容性 在标准中,没有必要发出\ ``START TRANSACTION`` 来开始一个事务块:任何 SQL 命令会隐式地开始一个块。 PostgreSQL的行为可以被视作 在每个命令之后隐式地发出一个没有跟随在 ``START TRANSACTION``\ ( 或者\ ``BEGIN``\ )之后的 ``COMMIT``\ 并且因此通常被称作 “自动提交”。为了方便,其他关系型数据库系统也可能会 提供自动提交特性。 ``DEFERRABLE`` *``transaction_mode``* 是一种PostgreSQL语言扩展。 SQL 标准要求在连续的\ *``transaction_modes``*\ 之间有逗号, 但是由于历史原因PostgreSQL允许 省略逗号。 另见\ `SET TRANSACTION `__\ 的兼容性小节。 .. container:: refsect1 :name: id-1.9.3.179.8 .. rubric:: 另见 :name: 另见 `BEGIN `__, `COMMIT `__, `ROLLBACK `__, `SAVEPOINT `__, `SET TRANSACTION `__