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