Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 TRY-CATCH vs XACT_ABORT  [new]
relief
Member

Откуда:
Сообщений: 1197
Есть такой код

begin try
       begin tran
                  insert ...
                  update...
                  delete...
       commit tran
end try
begin catch
     	Goto Error
	
	end catch	
end catch

Error:
	
	if @@trancount > 0
        begin
           rollback tran
        end


я этот код укоротил до

 set xact_abort on;
 begin tran
 commit tran


я правильно понимаю, что второй вариант полностью покрывает первый или все таки есть кейсы которые не покрываются?
6 мар 16, 13:04    [18902878]     Ответить | Цитировать Сообщить модератору
 Re: TRY-CATCH vs XACT_ABORT  [new]
Есть такой код
Guest
relief,

есть все чтобы делать без goto, так нет - надо специально его выдумать.
как уже на SO написали, все вынесенное странно под goto с таким же успехом можно (и нужно) расположить в блоке catch

нет желания обрабатывать - не пиши catch
есть желание обрабатывать - пиши catch

нет, это не два эквивалентных куска кода
нужен роллбэк и все - xact_abort вполне ок. в любом случае лучше чем goto.

проблема со счетчиком транзакций скорее всего зарыта где-то еще.
в catch гораздо более правильно смотреть на xact_state.
6 мар 16, 16:22    [18903223]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить