Postgresql 中文操作指南

BEGIN

BEGIN — 启动事务块

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 和磁盘活动。在事务中执行多条语句还有助于在执行多个相关更改时确保一致性:其他会话将无法看到那些尚未完成所有相关更新的中间状态。

如果指定了隔离级别、读/写模式或可延迟模式,新事务将具有那些特性,就像执行了 SET TRANSACTION

Parameters

  • WORK__TRANSACTION

    • 可选项关键字。它们没有效果。

有关此语句中其他参数含义的信息,请参阅 SET TRANSACTION

Notes

START TRANSACTION 具有与 BEGIN 相同的功能。

使用 COMMITROLLBACK 终止事务块。

当已在事务块内时发出 BEGIN ,将触发警告消息。不会影响事务的状态。要在事务块内嵌套事务,请使用保存点(请参阅 SAVEPOINT )。

为了向后兼容,可以省略连续的 transaction_modes 之间的逗号。

Examples

开始事务块:

BEGIN;

Compatibility

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

DEFERRABLE transaction_mode 是 PostgreSQL 语言扩展。

顺便说一句, BEGIN 关键字在嵌入式 SQL 中具有不同的用途。在移植数据库应用程序时,建议您谨慎对待事务语义。