On this page
BEGIN
开始-开始 Transaction 块
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
命令之后的所有语句将在单个事务中执行,直到给出明确的COMMIT或ROLLBACK。默认情况下(不带BEGIN
),PostgreSQL 以“自动提交”模式执行事务,也就是说,每个语句都在其自己的事务中执行,并且在语句末尾隐式执行一次提交(如果执行成功,则回滚完成) )。
在事务块中,语句的执行速度更快,因为事务启动/提交需要大量的 CPU 和磁盘活动。在事务中执行多个语句对于确保进行一些相关更改时的一致性也很有用:其他会话将无法看到中间状态,其中所有相关更新尚未完成。
如果指定了隔离级别,读/写模式或可延迟模式,则新事务具有那些 Feature,就像执行了SET TRANSACTION一样。
Parameters
WORK
TRANSACTION
- 可选关键字。它们没有作用。
有关此语句的其他参数的含义,请参考SET TRANSACTION。
Notes
START TRANSACTION与BEGIN
具有相同的功能。
使用COMMIT或ROLLBACK终止 Transaction 冻结。
如果已在事务块中发出BEGIN
,则会发出警告消息。Transaction 状态不受影响。要将事务嵌套在事务块中,请使用保存点(请参阅SAVEPOINT)。
出于向后兼容性的原因,可以省略连续* transaction_modes
*之间的逗号。
Examples
要开始 Transaction 块:
BEGIN;
Compatibility
BEGIN
是 PostgreSQL 语言扩展。它等效于 SQL 标准命令START TRANSACTION,其参考页包含其他兼容性信息。
DEFERRABLE
* transaction_mode
*是 PostgreSQL 语言扩展。
BEGIN
关键字在嵌入式 SQL 中有不同的用途。建议您在移植数据库应用程序时注意事务语义。