Завершение транзакции

Назначение

Операторы завершения транзакции предназначены для подтверждения или отказа от внесенных в базу данных изменений в процессе выполнения текущей транзакции.

Синтаксис операторов

         
COMMIT [RELEASE]; // фиксация изменений
ROLLBACK [RELEASE]; // откат изменений

Описание

Все изменения в базу данных вносятся с помощью запросов, подаваемых в операторе EXECUTE. Все запросы оператора EXECUTE в хранимой процедуре подаются по каналу, который автоматически открывается как дочерний от пользовательского канала в приложении (то есть канала, по которому исполняется пользовательская программа). Процедура может откатить или зафиксировать те изменения, которые были сделаны в ее теле, либо просто завершить исполнение. В последнем случае решение вопроса о результате завершения транзакции полностью возлагается на приложение, которое может подать операторы COMMIT или ROLLBACK по своему каналу, что отразится на всех изменениях, сделанных как самой процедурой, так и всеми ее дочерними процедурами.

Таким образом, процедура может частично откатывать или фиксировать свои изменения, или использоваться как часть более крупной транзакции.

Если в этих операторах указана фраза RELEASE, внутренний курсор, по которому выполняются операторы EXECUTE, сразу закрывается после завершения транзакции. В противном случае он остается открытым, что позволяет быстро продолжить сеанс изменений.