BEGIN
更新时间:2026-06-24
启动事务块。
语法
SQL
1 BEGIN [WORK | TRANSACTION] [transaction_mode]
2 ```
3
4 其中`transaction_mode`是:
5
6 ``` sql
7 ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}
8 READ WRITE | READ ONLY
9 [ NOT ] DEFERRABLE
10 ```
11
12
13
14## 描述
15
16`BEGIN`启动事务块,即`BEGIN`命令之后的所有语句将在单个事务中执行, 直到给出显式的`COMMIT`或`ROLLBACK`。
17
18 默认情况下(没有`BEGIN`),PalopgMPP数据库以自动提交模式执行事务,即每个语句在其自己的事务中执行,并且在语句末尾隐式执行提交(如果执行成功,否则回滚)。
19
20 在事务块中,语句的执行速度更快,因为事务启动/提交需要大量的CPU和磁盘活动。 在事务中执行多个语句对于确保进行一些相关更改时的一致性也很有用:其他会话将无法看到中间状态,其中不是所有相关更新都完成。
21
22 如果指定了隔离级别,读/写模式或可延迟模式,则新事务具有那些特征, 就像执行`SET TRANSACTION`一样。
23
24
25
26## 参数
27
28该SQL命令参数说明见下
29
30 `WORK` \| `TRANSACTION`
31 : 可选关键字。它们没有作用。
32
33 `SERIALIZABLE` \| `READ COMMITTED` \| `READ UNCOMMITTED`
34 : SQL标准定义了四个事务隔离级别: `READ UNCOMMITTED`,`READ COMMITTED`,`REPEATABLE READ`和`SERIALIZABLE`。
35
36 `READ UNCOMMITTED`允许事务查看未提交的并发事务所做的更改。 在PalopgMPP数据库中这是不可能的,因此`READ UNCOMMITTED`与`READ COMMITTED`相同。
37
38 `READ COMMITTED`是PalopgMPP数据库中的默认隔离级别,可确保语句只能看到在开始之前提交的行。如果在第一次执行该语句后又提交了另一个并发事务,则在一个事务中执行两次的同一条语句可能会产生不同的结果。
39
40 `REPEATABLE READ`隔离级别确保事务只能看到在事务开始之前提交的行。 `REPEATABLE READ`是PalopgMPP数据库支持的最严格的事务隔离级别。 由于序列化失败,必须准备使用`REPEATABLE READ`隔离级别的应用程序以重试事务。
41
42 `SERIALIZABLE`事务隔离级别确保执行多个并发事务与串行执行相同的事务产生的效果相同。如果指定`SERIALIZABLE`,则PalopgMPP数据库将退回到`REPEATABLE READ`。
43
44 指定`DEFERRABLE`在PalopgMPP数据库中无效,但是支持语法以与PostgreSQL兼容。 仅当事务为`READ ONLY`且`SERIALIZABLE`, 并且PalopgMPP数据库不支持`SERIALIAZABLE`事务时,才可以推迟该事务。
45
46
47
48注解
49: `START TRANSACTION`具有与`BEGIN`相同的功能。
50
51 使用`COMMIT`或`ROLLBACK`终止事务块。
52
53 如果已经在事务块中,则发出`BEGIN`会引起警告消息。 事务状态不受影响。要将事务嵌套在事务块中,请使用保存点(请见`SAVEPOINT`)。
54
55
56
57## 示例
58
59要开始事务块:
60
61 ``` sql
62 BEGIN;
63 ```
64
65 要以可重复读隔离级别开始事务块:
66
67 ``` sql
68 BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
69 ```
70
71
72
73兼容性说明
74: `BEGIN`是PalopgMPP数据库语言扩展。 它等效于SQL标准命令`START TRANSACTION`。
75
76 `DEFERRABLE` `transaction_mode`是PalopgMPP数据库语言的扩展。
77
78 附带地,`BEGIN`关键字在嵌入式SQL中用于不同的目的。 建议您在移植数据库应用程序时注意事务语义。
79
80
81
82相关SQL命令
83: `COMMIT`, `ROLLBACK`, `START TRANSACTION`, `SAVEPOINT`
评价此篇文章
