ROLLBACK
Откат транзакции.
DSQL, ESQL
ROLLBACK [WORK] [TRANSACTION tr_name] [RETAIN [SNAPSHOT] | TO SAVEPOINT sp_name] [RELEASE];
Параметр | Описание |
---|---|
tr_name |
Имя транзакции.Доступно только в ESQL. |
sp_name |
Имя точки сохранения.Доступно только в DSQL. |
Оператор ROLLBACK
отменяет все изменения данных базы данных (добавление, изменение, удаление), выполненные в контексте этой транзакции.Оператор ROLLBACK
никогда не вызывает ошибок.Если не указано предложение RETAIN
, то при его выполнении освобождаются все ресурсы сервера, связанные с выполнением данной транзакции.
Необязательное предложение TRANSACTION
задаёт имя транзакции.Предложение TRANSACTION
доступно только в Embedded SQL.Если предложение TRANSACTION
не указано, то оператор ROLLBACK
применяется к транзакции по умолчанию.
Note
|
За счёт именованных транзакций позволяется одновременный запуск нескольких активных транзакций в одном приложении.При этом должна быть объявлена и инициализирована одноимённая переменная базового языка.В DSQL, это ограничение предотвращает динамическую спецификацию имён транзакций. |
Необязательное ключевое слово WORK
может быть использовано лишь для совместимости с другими системами управления реляционными базами данных.
Ключевое слово RETAIN
указывает, что все действия по изменению данных в контексте этой транзакции, отменяются, а сама транзакция продолжает оставаться активной, сохраняя свой идентификатор, а также состояние курсоров, которое было до мягкой фиксации транзакции.Таким образом, выделенные ресурсы для транзакции не освобождаются.
Для уровней изоляции SNAPSHOT
и SNAPSHOT TABLE STABILITY
состояние базы данных остаётся в том виде, которое база данных имела при первоначальном старте такой транзакции, однако в случае уровня изоляции READ COMMITTED
база данных будет иметь вид, соответствующий новомусостоянию на момент выполнения оператора ROLLBACK RETAIN
.В случае отмены транзакции с сохранением её контекста нет необходимости заново выполнять оператор SELECT
для получения данных из таблицы.