MSSQL - Try Catch Transaction (Отменяем транзакцию с ошибкой корректно)
MS SQL - по необходимостиНиже приведен пример корректного отмена транзакции при ошибке:
update Params set Value=168 where Param = 'SessionHoursLimit'
PRINT @@TRANCOUNT
BEGIN TRY
BEGIN TRAN
PRINT @@TRANCOUNT
update Params set Value=167 where Param = 'SessionHoursLimit'
select 1/0 -- Если закомментировать эту строку то предыдущая строка выполнится
COMMIT TRAN
END TRY
BEGIN CATCH
if @@TRANCOUNT>0
ROLLBACK TRAN
END CATCH
PRINT @@TRANCOUNT
select * from Params
Если закомментировать строку с ошибочным оператором SELECT 1/0 то предшествующая строка будет выполнена и транзакция успешно завершится, если оставить строку SELECT 1/0 то транзакция отменится полностью, и параметр Value останется таким, каким он был установлен в первой строке скрипта до начала транзакции. Комментировать...
Правильное выполнение транзакции в MSSQL
MS SQL - по необходимостиДва варианта выполнения транзакции в MSSQL, для которых при возникновении ошибки транзакция отменяется.
Первый вариант:
BEGIN TRY
BEGIN TRAN
UPDATE 1
UPDATE 2 --Ошибка
UPDATE 3
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
Второй вариант:
SET XACT_ABORT ON
BEGIN TRAN
UPDATE 1
UPDATE 2 --Ошибка
UPDATE 3
COMMIT TRAN
Оба варианта сделают одно и то-же при возникновении ошибки на втором шаге, отменят всю транзакцию включая первый шаг. Комментировать...
XMLElement 2
описание 4
Красноярск 2
SQL 16
C# 21
HTC 3
example 3
оптимизация 2
Роботы 2
dotnet 2
пример 6
itCOM 2
обзор 5
Delphi 2
Базы данных 4
TSQL 11
Формы 2
MC2 17
C шарп 35
обновления 9
Datalogic 4
программирование для идиотов 2
xmlattributes 2
перевод 6
ZX Spectrum 2
XMLAGG 2
Windows Mobile 13
Arduino 3
oracle 24
xml 3
фотографии 2
NET CF 8
DataGridView 2
TDS 2
таблица 2
торговля 2
ListView 2
Net Core 12
объединение 2
Стив Джобс 4
insertchildxml 2
Datalogic Memor 2
Crystal Reports в C шарп 2
jQuery 3
Обновление сайта 2
Table 2
Symbol 14
programming 3
MySql 13
Transaction 2
TDS NOMAD 2
ASP.NET 3
Видео 3
bottle 6
tables 2