⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
事务管理

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

语句

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

开始事务

要开始一个事务,运行

BEGIN TRANSACTION;

提交事务

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

COMMIT;

如果您不在活动事务中,COMMIT 语句将失败。

回滚事务

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

ROLLBACK;

您也可以使用 abort 命令,其行为与此相同

ABORT;

如果您不在活动事务中,ROLLBACKABORT 语句将失败。

示例

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

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>