Проект «SnakeProject» Михаила КозловаРегистрация

Навигация
⇒SQL\T-SQL⇒

⇐CISCO
⇐Voice(Asterisk\Cisco)
⇐Microsoft
⇐Powershell
⇐Python
⇐FreeBSD and Nix
⇐1С
⇐Общая
⇐WEB Разработка
⇐ORACLE SQL \ JAVA
⇐Мото

T-SQL 2012: Транзакции и перехват исключений


--Свойства транзакций:

--Атомарность - Либо все операции транзакции завершаются успешно, либо ни одна операция из них не выполняется.

--Согласованность - Ресурсы, вовлеченные транзакцией, остаются в согласованном состоянии в начале транзакции и при ее окончании. 
--Транзакция не должна нарушать ограничения, накладываемые требованием целостности.

--Изолированность - Операции транзакции являются изолированными для остальных операций. 
--Внешние по отношению к транзакции операции ничего не занют о данных внутри самой транзакции.

--Устойчивость - После успешного завершении транзакции ее результаты фиксируются, в случае прерывания или сбоя - откатываются.

USE tsql;

--Задаем начальные данные
UPDATE data SET data = 1;

--Начинаем транзакцию
BEGIN TRAN;

UPDATE data
    SET data = 2;

--Первая точка сохранения
SAVE TRAN S2;

UPDATE data
    SET data = 3;

--Вторая точка сохранения
SAVE TRAN S3;

--Откатываемся к первой точке сохранения
ROLLBACK TRAN S2;

--Подтверждаем окончание транзакции
COMMIT TRAN;

SELECT * FROM data;


--Пример транзакции с откатом в случае ошибки
BEGIN TRAN;

UPDATE data
    SET data = 3;
SAVE TRAN S;

BEGIN TRY
UPDATE data
    SET data = 4;

--Выдаст ошибку
UPDATE data
    SET data = 999999999999;
END TRY

--Откатываемся к сохраненной точке и фиксируем транзакцию
BEGIN CATCH
    SELECT ERROR_NUMBER() AS errNum,
            ERROR_MESSAGE() AS errMess,
            ERROR_LINE() AS errLine;
    ROLLBACK TRAN S;
    COMMIT TRAN;
END CATCH

SELECT * FROM data;


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

© Snakeproject.ru создан в 2013 году. При копировании материала с сайта - оставьте ссылку.


Яндекс.Метрика

Goon Каталог сайтов Рейтинг@Mail.ru