# 开始
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 中用于不同的目的。建议您在移植数据库应用程序时注意事务语义。