Spec-Zone.ru › DuckDB

Управление транзакциями

DuckDB поддерживает базы данных ACID-транзакций. Транзакции обеспечивают изоляцию, т.е. изменения, внесённые одной транзакцией, не видны другим параллельным транзакциям до её подтверждения. Транзакция также может быть прервана, что приводит к отбрасыванию всех её изменений.

Операторы

DuckDB предоставляет следующие операторы для управления транзакциями.

Начало транзакции

Для начала транзакции выполните:

BEGIN TRANSACTION;

Подтверждение транзакции

Вы можете подтвердить транзакцию, чтобы сделать её видимой для других транзакций и записать её в постоянное хранилище (если DuckDB используется в постоянном режиме). Для подтверждения транзакции выполните:

COMMIT;

Если вы не находитесь в активной транзакции, оператор COMMIT завершится с ошибкой.

Откат транзакции

Вы можете прервать транзакцию. Эта операция, также известная как откат, отбросит все изменения, внесённые транзакцией в базу данных. Для прерывания транзакции выполните:

ROLLBACK;

Вы также можете использовать команду abort, которая имеет идентичное поведение:

ABORT;

Если вы не находитесь в активной транзакции, операторы ROLLBACK и ABORT завершатся с ошибкой.

Пример

Мы проиллюстрируем использование транзакций на простом примере.

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>.

© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/sql/statements/transactions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API