# 开始

BEGIN — 开始一个事务块

# 概要

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

# 描述

开始启动一个事务块,即一个之后的所有语句开始命令将在单个事务中执行,直到显式犯罪或者回滚给出。默认情况下(没有开始),PostgreSQL 以“自动提交”模式执行事务,即每条语句都在自己的事务中执行,并在语句末尾隐式执行提交(如果执行成功,则执行回滚)。

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

如果指定了隔离级别、读/写模式或可延迟模式,则新事务具有这些特征,就像设置交易被处决。

# 参数

工作
交易

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

参考设置交易有关此语句的其他参数的含义的信息。

# 笔记

开始交易具有相同的功能开始.

采用犯罪或者回滚终止事务块。

发行开始当已经在事务块中时会引发警告消息。事务的状态不受影响。要将事务嵌套在事务块中,请使用保存点(请参阅保存点)。

出于向后兼容的原因,连续之间的逗号*交易模式*可以省略。

# 例子

要开始一个事务块:

BEGIN;

# 兼容性

开始是 PostgreSQL 语言扩展。它相当于 SQL 标准命令开始交易,其参考页包含其他兼容性信息。

可延期的 *交易模式*是 PostgreSQL 语言扩展。

顺便说一句,开始关键字在嵌入式 SQL 中用于不同的目的。建议您在移植数据库应用程序时注意事务语义。

# 也可以看看

犯罪,回滚,开始交易,保存点