Назначение
Подтверждение транзакции.
Синтаксис
COMMIT [WORK] [TRANSACTION tr_name]
[RELEASE] [RETAIN [SNAPSHOT]];
Table 1. Параметры оператора COMMIT
| Параметр |
Описание |
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
|
Для транзакций, которые выполняют только чтение данных из базы данных, рекомендуется также использовать оператор COMMIT, а не ROLLBACK, поскольку этот вариант требует меньшего количества ресурсов сервера и улучшает производительность всех последующих транзакций.
|