文档

BEGIN

更新时间:

BEGIN语句可用于开始一个事务块,也就是说所有BEGIN命令之后的所有语句将被在一个事务中执行,直到给出一个显式的 COMMIT 或者 ROLLBACK。默认情况下(没有 BEGIN), PolarDB在 “自动提交”模式中执行事务,也就是说每个语句都在自己的事务中执行并且在语句结束时隐式地执行一次提交(如果执行成功,否则会完成一次回滚)。

简介

在一个事务块内的语句会执行得更快,因为事务的开始/提交也要求可观的 CPU 和磁盘活动。在进行多个相关更改时,在一个事务内执行多个语句也有助于保证一致性:在所有相关更新还没有完成之前,其他会话将不能看到中间状态。

如果指定了隔离级别、读/写模式或者延迟模式,新事务也会具有这部分特性, 就像执行了 SET TRANSACTION一样。

语法

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

    其中 transaction_mode 是以下之一:

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

参数

WORK|TRANSACTION:可选的关键词,无作用。

其他参数的含义请参考SET TRANSACTION

说明

  • START TRANSACTION 具有和 BEGIN 相同的功能。

  • 使用COMMIT 或者ROLLBACK来终止一个事务块。

  • 在已经在事务块中时发出BEGIN将产生警告消息。事务状态不会被影响。要在事务块中嵌套事务,可以使用SAVEPOINT

  • 由于向后兼容的原因,连续的 transaction_modes 之间的逗号可以被省略。

示例

开始一个事务块:

    BEGIN;
  • 本页导读 (0)
文档反馈