Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Команда rollback tran не влияет на последовательность выполнения команд программы. Следовательно, после отката необходимо выполнить команду RETURN.
Пример 2. В этом примере иллюстрируется последовательность выполнения транзакций.
BEGIN TRAN Tr1
INSERT MyTable VALUES (1)
PRINT @@TRANCOUNT -- значение = 1
SAVE TRAN Point_1
INSERT MyTable VALUES (2) -- здесь может быть любой SQL-код
-------- Если возникла ошибка, откат к точке Point_1
IF @@error <> 0
ROLLBACK TRAN Point_1
ELSE
---------- Если кол-во записей >3, осуществляется откат к началу транзакции
IF (SELECT COUNT (*) FROM MyTable) > 3
ROLLBACK TRAN Tr1
INSERT MyTable VALUES (3) -- здесь может быть любой SQL-код
------- Если возникла ошибка, откат к началу транзакции
IF @@error <> 0
ROLLBACK TRAN Tr1
COMMIT TRAN Tr1
Здесь после открытия транзакции добавляется запись в таблицу MyTable. Эта добавленная запись уже находится в таблице, но может участвовать в запросах только со стороны процесса, открывшего транзакцию. Она будет недоступна со стороны всех остальных процессов до закрепления транзакции.
Команда save tran используется в качестве "закладки". Она не влияет на значение @@trancount и не изменяет уровня вложенности транзакции, она лишь позволяет позднее вернуть транзакцию к этой точке.
Серверзапоминает факт начала транзакции, обновляя глобальную переменную @@trancount. Вначале переменная @@trancount равна 0. Она увеличивается на 1 для каждой новой вложенной транзакции.
Дата публикования: 2014-12-08; Прочитано: 442 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!