⌘+k ctrl+k
1.4 (LTS)
搜索快捷键 cmd + k | ctrl + k
事务管理

DuckDB 支持 ACID 数据库事务。事务提供隔离性,即一个事务所做的更改在提交之前,对并发事务是不可见的。事务也可以被中止(abort),这会丢弃该事务迄今为止所做的任何更改。

语句

DuckDB 提供以下语句用于事务管理。

开始事务

要开始一个事务,请运行

BEGIN TRANSACTION;

提交事务

你可以提交事务,使其对其他事务可见并将其写入持久化存储(如果使用持久化模式下的 DuckDB)。要提交事务,请运行

COMMIT;

如果你不在一个活跃的事务中,COMMIT 语句将失败。

回滚事务

你可以中止一个事务。此操作也称为回滚,它将丢弃该事务对数据库所做的任何更改。要中止事务,请运行

ROLLBACK;

你也可以使用行为相同的 abort 命令

ABORT;

如果你不在一个活跃的事务中,ROLLBACKABORT 语句将失败。

隔离级别

DuckDB 的并发模型保证了快照隔离(snapshot isolation)。违反此隔离级别的事务将被中止。

示例

我们通过一个简单的示例来说明事务的使用。

CREATE TABLE person (name VARCHAR, age BIGINT);

BEGIN TRANSACTION;
INSERT INTO person VALUES ('Ada', 52);
COMMIT;

BEGIN TRANSACTION;
DELETE FROM person WHERE name = 'Ada';
INSERT INTO person VALUES ('Bruce', 39);
ROLLBACK;

SELECT * FROM person;

第一个事务(插入“Ada”)已提交,但第二个事务(删除“Ada”并插入“Bruce”)被中止了。因此,最终的表中将仅包含 <'Ada', 52>

© 2025 DuckDB 基金会,阿姆斯特丹,荷兰
行为准则 商标使用指南