Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Begin TRAN

SET IMPLICIT_TRANSACTIONS OFF

SET IMPLICIT_TRANSACTIONS ON

 

Для установки режима автоматического определения транзакций отключается режим явного определения транзакций - используется команда:

 

Явные транзакции

Явные транзакции требуют, чтобы пользователь указал начало и ко­нец транзакции, используя следующие команды:

Ø Начало транзакции определяется командой

BEGIN TRAN [SACTION] [имя_транзакции | @имя_переменной_транзакции ]

[WITH MARK [ 'описание_транзакции' ]]

При этом в журнале транзакций фиксируется момент начала транзакции и первона­чальные значения данных;

 

Ø Конец транзакции. Если в теле транзакции не было ошибок, то следующая команда предписывает серверу зафиксировать все изменения, сде­ланные в транзакции, после чего в журнале транзакций помечается, что изменения зафиксированы и транзакция завершена:

 

COMMIT [TRANSACTION] [имя_транзакции | @имя_переменной_транзакции]

 

Ø Внутри транзакции можно создавать точки сохранения. При выполнении следующей команды СУБД сохраняет со­стояние БД в текущей точке и присваивает этому состоянию имя точки сохранения:

 

SAVE TRAN [ SACTION ][имя_точки_сохранения | @имя_переменной_точки_сохранения]

 

Ø Прерывание транзакции. Когда сервер встречает приведенную ниже команду, проис­ходит откат транзакции, восстанавливается первоначальное состоя­ние системы и в журнале транзакций отмечается, что транзакция бы­ла отменена.

 

ROLLBACK [TRAN [ SACTION ]] [имя_транзакции | @имя_

переменной_транзакции | имя_точки__сохранеия | @имя_переменной_точки_сохранения]

Эта команда либо отменяет все изменения, сделанные в БД после оператора BEGIN TRANSACTION, либо отменяет изменения, сделанные в БД после точки сохранения, возвращая транзакцию к месту, где был выполнен оператор SAVE TRANSACTION.

 

Некоторые полезные функции:

Функция @@TRANCOUNT возвращает количество активных транзакций.

Функция @@NESTLEVEL возвращает уровень вложенности транзакции.

Пример 3. Использование точек сохранения.

Пусть применительно к таблице Товар выполняются следующие команды:

 

SAVE TRAN point1

При этом в точке point 1 сохраняется первоначальное состояние таблицы Товар

 

DELETE FROM Товар WHERE ID_Товара=2

SAVE TRAN point2

В точке point2 сохраняется состояние таблицы Товар без товара с кодом 2.

 

DELETE FROM Товар WHERE ID_Товара=3

SAVE TRAN point3

В точке point3 сохраняется состояние таблицы Товар без двух товаров - с кодом 2 и с кодом 3.

 

DELETE FROM Товар WHERE ID_Товара<>1

ROLLBACK TRAN point3

 

Сначала удаляются все записи кроме одной – с ID_Товара<>1. Но потом происходит отмена удаления и возврат в состояние таблицы без товаров с кодами 2 и 3.

 

SELECT * FROM Товар

Оператор SELECT покажет таблицу товар без товаров с кодами 2 и 3.

 

ROLLBACK TRAN point1

Происходит возврат в первоначальное состояние таблицы.

 

SELECT * FROM Товар

<== предыдущая лекция | следующая лекция ==>
Управление транзакциями в среде MS SQL Server | Rollback TRAN
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 349; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.