КАТЕГОРИИ: Архитектура-(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) |
Save transaction @savepoint_variable | savepoint_name
Здесь: • save_point — имя точки сохранения. Длина имени не может превы • @savepoint_variabie — переменная, содержащая имя точки сохране □ Команда принудительного отката транзакции. Прерывает операцию, и данные возвращаются в исходное состояние. В журнале транзакций делается соответствующая отметка. ROLLBACK [ TRAN[ SACTION ] [ transaction_name | @tran_name_variable savepoint_name | @savepoint_variable ] ] Включены следующие разделы: • transaction_name — ИМЯ транзакции; • @tran_name_variabie — переменная, задающая имя транзакции; • savepoint_name — имя контрольной точки, заданной с помощью • @savepoint_variable — переменная, задающая имя контрольной точки. Как и в предыдущих главах, приведу примеры использования описанных команд и дам дополнительные комментарии по включению транзакций в свои программы. Пример. Простая транзакция BEGIN TRANSACTION DECLARE @a BIGINT SELECT @a=number FROM list BEGIN TRANSACTION CREATE TABLE adres ( ul CHAR(20) NOT NULL, dom CHAR(20) NOT NULL, kv CHAR(20) NOT NULL) IF EXISTS(SELECT * FROM abon WHERE tab<10000) BEGIN INSERT INTO adres SELECT a.ul,a.dom,a.kv FROM abon a WHERE a.tab<100000 END ELSE BEGIN ROLLBACK TRANSACTION RETURN END COMMIT TRANSACTION Разбирая пример 8.2, обратите внимание на то, как проводится откат транзакции. После команды rollback transaction стоит команда return. Это важно, т. к. команда rollback transaction, по сути, осуществляет выход из транзакции, а выполнение после этого команды commit transaction приведет, естественно, к ошибке (см. о счетчике транзакций комментарии к примеру 8.4). Пример. Точка сохранения CREATE PROCEDURE dbo.new AS DELETE FROM adres BEGIN TRANSACTION namel INSERT INTO adres VALUES(1,,,) INSERT INTO adres VALUES(2,,,) INSERT INTO adres VALUES(3,,,) --Закрепление содержимого таблицы после трех вставок SAVE TRANSACTION naine2 INSERT INTO adres VALUES(4,,,) INSERT INTO adres VALUES(5,,,) INSERT INTO adres VALUES(6,,,) ROLLBACK TRANSACTION name2 COMMIT TRANSACTION SELECT * FROM adres RETURN В результате выполнения данной хранимой процедуры в таблице останутся только три первые строки (значения первого поля: 1, 2, 3). Другими словами, закрепленными окажутся команды до точки сохранения.
Дата добавления: 2013-12-11; Просмотров: 297; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |