-
Notifications
You must be signed in to change notification settings - Fork 2
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 | Устанавливает точку сохранения внутри транзакции. |