BEGIN

开始-开始 Transaction 块

Synopsis

BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]

where transaction_mode is one of:

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

Description

BEGIN启动事务块,也就是说,BEGIN命令之后的所有语句将在单个事务中执行,直到给出明确的COMMITROLLBACK。默认情况下(不带BEGIN),PostgreSQL 以“自动提交”模式执行事务,也就是说,每个语句都在其自己的事务中执行,并且在语句末尾隐式执行一次提交(如果执行成功,则回滚完成) )。

在事务块中,语句的执行速度更快,因为事务启动/提交需要大量的 CPU 和磁盘活动。在事务中执行多个语句对于确保进行一些相关更改时的一致性也很有用:其他会话将无法看到中间状态,其中所有相关更新尚未完成。

如果指定了隔离级别,读/写模式或可延迟模式,则新事务具有那些 Feature,就像执行了SET TRANSACTION一样。

Parameters

  • WORK
    TRANSACTION

    • 可选关键字。它们没有作用。

有关此语句的其他参数的含义,请参考SET TRANSACTION

Notes

START TRANSACTIONBEGIN具有相同的功能。

使用COMMITROLLBACK终止 Transaction 冻结。

如果已在事务块中发出BEGIN,则会发出警告消息。Transaction 状态不受影响。要将事务嵌套在事务块中,请使用保存点(请参阅SAVEPOINT)。

出于向后兼容性的原因,可以省略连续* transaction_modes *之间的逗号。

Examples

要开始 Transaction 块:

BEGIN;

Compatibility

BEGIN是 PostgreSQL 语言扩展。它等效于 SQL 标准命令START TRANSACTION,其参考页包含其他兼容性信息。

DEFERRABLE * transaction_mode *是 PostgreSQL 语言扩展。

BEGIN关键字在嵌入式 SQL 中有不同的用途。建议您在移植数据库应用程序时注意事务语义。

See Also

COMMIT, ROLLBACK, START TRANSACTION, SAVEPOINT