КАТЕГОРИИ: Архитектура-(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 Товар
Дата добавления: 2014-01-06; Просмотров: 350; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |