с Firebird 2.5 ваша версия: любая

SAVEPOINT

Версии сервера

2.53.04.05.06.0
ДаДаДаДаДа

Доступно в

DSQL

Формат

SAVEPOINT sp_name
ПараметрОписание
sp_nameИмя точки сохранения. Должно быть уникальным в рамках транзакции.

Описание

Оператор SAVEPOINT создаёт совместимую с SQL:99 точку сохранения, к которой можно позже откатить работу с базой данных, не отменяя всё выполненное с момента старта транзакции. Механизм точек сохранения также известен как «вложенные транзакции» (nested transactions).

Если точка сохранения с указанным именем уже существует в рамках текущей транзакции, старая удаляется и создаётся новая с тем же именем.

Для отката изменений к точке сохранения используется оператор ROLLBACK TO SAVEPOINT.

Примечание. Внутренний механизм точек сохранения может использовать большие объёмы памяти, особенно при многократном обновлении одних и тех же записей в одной транзакции. Если точка сохранения больше не нужна, но и транзакцию завершать пока не планируется, её можно удалить оператором RELEASE SAVEPOINT sp_name, освободив ресурсы.

Пример

CREATE TABLE TEST (ID INTEGER);
COMMIT;

INSERT INTO TEST VALUES (1);
COMMIT;

INSERT INTO TEST VALUES (2);
SAVEPOINT Y;
DELETE FROM TEST;
SELECT * FROM TEST;      -- вернёт пустой набор

ROLLBACK TO SAVEPOINT Y;
SELECT * FROM TEST;      -- снова видна запись 2

См. также

ROLLBACK, COMMIT, SET TRANSACTION

Источник

Руководство по языку SQL СУБД Firebird 5.0 (sim1984 / ibase.ru, Public Documentation License)

Обсуждение