Завершение транзакции
Назначение
Операторы завершения транзакции предназначены для подтверждения или отказа от внесенных в базу данных изменений в процессе выполнения текущей транзакции.
Синтаксис операторов
COMMIT [RELEASE]; // фиксация изменений ROLLBACK [RELEASE]; // откат изменений
Описание
Все изменения в базу данных вносятся с помощью запросов, подаваемых в операторе EXECUTE
.
Все запросы оператора EXECUTE
в хранимой процедуре подаются по каналу, который автоматически
открывается как дочерний от пользовательского канала в приложении (то есть канала, по которому исполняется
пользовательская программа). Процедура может откатить или зафиксировать те изменения, которые были сделаны
в ее теле, либо просто завершить исполнение. В последнем случае решение вопроса о результате завершения транзакции
полностью возлагается на приложение, которое может подать операторы COMMIT
или ROLLBACK
по своему каналу, что отразится на всех изменениях, сделанных как самой процедурой, так и всеми ее дочерними процедурами.
Таким образом, процедура может частично откатывать или фиксировать свои изменения, или использоваться как часть более крупной транзакции.
Если в этих операторах указана фраза RELEASE
, внутренний курсор, по которому выполняются операторы
EXECUTE
, сразу закрывается после завершения транзакции. В противном случае он остается открытым, что
позволяет быстро продолжить сеанс изменений.