Управление транзакциями
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