Skip to content

22. Инструкции управления транзакциями T SQL

Pandas edited this page Dec 30, 2017 · 2 revisions

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

SQL Server работает в следующих режимах транзакций:

  • Автоматическое принятие транзакций. Каждая отдельная инструкция является транзакцией.
  • Явные транзакции. Каждая транзакция явно начинается с инструкции BEGIN TRANSACTION и явно заканчивается инструкцией COMMIT или ROLLBACK.
  • Неявные транзакции. Новая транзакция неявно начинается, когда предыдущая транзакция завершена, но каждая транзакция явно завершается инструкцией COMMIT или ROLLBACK.
  • Транзакции контекста пакета. Будучи применимой только к множественным активным результирующим наборам (MARS), явная или неявная транзакция Transact-SQL, которая запускается в сеансе MARS, становится транзакцией контекста пакета. SQL Server автоматически выполняет откат транзакции контекста пакета, если эта транзакция не зафиксирована или выполнен ее откат при завершении пакета.
Инструкции Описание
BEGIN DISTRIBUTED TRANSACTION Запускает распределенную транзакцию на языке Transact-SQL, управляемую координатором распределенных транзакций Microsoft (MS DTC).
BEGIN TRANSACTION Отмечает начальную точку явной локальной транзакции. Инструкция BEGIN TRANSACTION увеличивает значение функции @@TRANCOUNT на 1.
COMMIT TRANSACTION Отмечает успешное завершение явной или неявной транзакции. Если значение @@TRANCOUNT равно 1, то инструкция COMMIT TRANSACTION выполняет все изменения, сделанные с начала транзакции постоянной частью базы данных, освобождает ресурсы, удерживаемые транзакцией, и уменьшает значение параметра @@TRANCOUNT до 0. Если значение переменной @@TRANCOUNT больше 1, инструкция COMMIT TRANSACTION уменьшает значение @@TRANCOUNT только на 1 и оставляет транзакцию активной.
COMMIT WORK Обозначает завершение транзакции.
ROLLBACK TRANSACTION Откатывает явные или неявные транзакции до начала или до точки сохранения транзакции. ROLLBACK TRANSACTION можно использовать для отмены всех изменений данных, произведенных с начала транзакции или до точки сохранения. Она также освобождает ресурсы, используемые транзакцией.
ROLLBACK WORK Выполняет откат пользовательской транзакции на начало транзакции.
SAVE TRANSACTION Устанавливает точку сохранения внутри транзакции.
Clone this wiki locally