START TRANSACTION
更新时间:2026-06-24
启动事务块。
语法
SQL
1 START TRANSACTION [transaction_mode] [READ WRITE | READ ONLY]
2 ```
3
4 其中`transaction_mode`是:
5
6 ``` sql
7 ISOLATION LEVEL {SERIALIZABLE | READ COMMITTED | READ UNCOMMITTED}
8 ```
9
10
11
12## 描述
13
14`START TRANSACTION`开始一个新的事务块。 如果指定了隔离级别或读/写模式,则新事务具有那些特征, 就像执行`SET TRANSACTION`一样。 这与`BEGIN`命令相同。
15
16
17
18## 参数
19
20该SQL命令参数说明见下
21
22 `READ UNCOMMITTED` \| `READ COMMITTED` \| `REPEATABLE READ` \| `SERIALIZABLE`
23 : SQL标准定义了四个事务隔离级别: `READ UNCOMMITTED`,`READ COMMITTED`, `REPEATABLE READ`和`SERIALIZABLE`。
24
25 `READ UNCOMMITTED`允许事务查看未提交的并发事务所做的更改。 在PalopgMPP数据库中这是不可能的,因此`READ UNCOMMITTED`与`READ COMMITTED`相同。
26
27 `READ COMMITTED`是PalopgMPP数据库中的默认隔离级别,可确保语句只能看到在其开始之前提交的行。如果在第一次执行该语句后又提交了另一个并发事务,则在一个事务中执行两次的同一条语句可能会产生不同的结果。
28
29 `REPEATABLE READ`隔离级别确保事务只能看到在事务开始之前提交的行。 `REPEATABLE READ`是PalopgMPP数据库支持的最严格的事务隔离级别。 由于可串行化失败,必须准备使用`REPEATABLE READ`隔离级别的应用程序以重试事务。
30
31 `SERIALIZABLE`事务隔离级别确保执行多个并发事务与串行运行这些事务产生相同的效果。
32
33 如果指定`SERIALIZABLE`,则PalopgMPP数据库将退回到`REPEATABLE READ`。
34
35 `READ WRITE` \| `READ ONLY`
36 : 确定事务是读/写还是只读。 读/写是默认设置。
37
38 当事务为只读时,不允许使用以下SQL命令:`INSERT`,`UPDATE`,`DELETE`和`COPY FROM`(如果要写入的表不是临时表); 所有的`CREATE`,`ALTER`和`DROP`命令;`GRANT`,`REVOKE`,`TRUNCATE`; 如果`EXPLAIN ANALYZE`和`EXECUTE`将要执行的命令在上述命令之中,也不被允许。 和EXPLAIN ANALYZE和EXECUTE,如果它们将要执行的命令在列出的命令之中。
39
40
41
42## 示例
43
44启动一个事务块:
45
46 ``` sql
47 START TRANSACTION;
48 ```
49
50
51
52兼容性说明
53: 在标准中,不必发出`START TRANSACTION`来启动事务块:任何SQL命令都隐式地开始一个块。PalopgMPP数据库行为可以看作是在每个不遵循`START TRANSACTION`(或`BEGIN`)的命令之后隐式发出`COMMIT`,因此通常被称为“自动提交”。其他关系数据库系统可能会提供便利的自动提交功能。
54
55 SQL标准要求连续的`transaction_modes`之间使用逗号,但是由于历史原因,PalopgMPP数据库允许省略逗号。
56
57 另请参阅`SET TRANSACTION`的兼容性部分。
58
59
60
61相关SQL命令
62: `BEGIN`, `SET TRANSACTION`
评价此篇文章
