-
Notifications
You must be signed in to change notification settings - Fork 2
31. Управление транзакциями в SQL Server
Управление транзакциями в приложениях реализуется, главным образом, путем указания того, когда транзакция начинается и заканчивается. Это можно указать либо с помощью инструкций языка Transact-SQL, либо используя функции интерфейса прикладного программирования (API
) для баз данных. В системе также должна быть возможность правильной обработки ошибок, прерывающих транзакцию до ее окончания.
Явный запуск транзакции через функцию API
или посредством инструкции языка Transact-SQL BEGIN TRANSACTION
.
Автоматическая фиксация транзакций- Режим по умолчанию для компонента Database Engine. Каждая отдельная инструкция языка Transact-SQL фиксируется после завершения. Нет необходимости указывать какие-либо инструкции для управления транзакциями.
Установка неявного режима транзакции либо через функцию API, либо через инструкцию языка Transact-SQL SET IMPLICIT_TRANSACTIONS ON
. Следующая инструкция автоматически запускает новую транзакцию. После завершения этой транзакции следующая инструкция языка Transact-SQL запускает новую транзакцию
Транзакции можно завершить инструкцией COMMIT
или ROLLBACK
Если транзакция выполнена успешно, ее следует зафиксировать. Инструкция COMMIT
гарантирует, что все изменения в пределах данной транзакции стали постоянной частью базы данных.
Если в транзакции произойдет ошибка или пользователь решит отменить транзакцию, следует выполнить ее откат. Инструкция ROLLBACK отменяет все изменения, сделанные в пределах транзакции, возвращая данные в то состояние, в котором они находились на начало транзакции. Инструкция ROLLBACK
также освобождает удерживаемые транзакцией ресурсы.
BEGIN TRANSACTION;
GO
DELETE FROM Example.sample
WHERE ID = 17;
GO
COMMIT TRANSACTION;
GO
BEGIN TRAN @TransactionName
INSERT INTO ValueTable VALUES(1)
INSERT INTO ValueTable VALUES(2)
ROLLBACK TRAN @TransactionName
INSERT INTO ValueTable VALUES(3)
INSERT INTO ValueTable VALUES(4)
SELECT * FROM ValueTable