Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Примечание. Команда rollback tran не влияет на последовательность выполнения ко­манд программы



Команда 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...