⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Transaction Management

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

Statements

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

开始一个事务

要开始一个事务,请运行:

BEGIN TRANSACTION;

提交事务

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

COMMIT;

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

回滚事务

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

ROLLBACK;

你也可以使用 abort 命令,它具有相同的行为:

ABORT;

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

Example

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

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>