Начать транзакцию ... Подтвердить транзакцию - PullRequest
0 голосов
/ 12 декабря 2011

У меня есть вопрос относительно использования Транзакции.Рассмотрим этот код:

declare @trans_name varchar(max) = 'Append'
begin tran @trans_name
    insert into SIDB_Module
    (module_name, module_description, modulelevel, parentid, issystem, iscurrent)
    values
    (@module_name, @module_description, @modulelevel, @parentid, @issystem, 1)
    set @moduleid = SCOPE_IDENTITY()
    declare @id int = OBJECT_ID('SIDB_Module')
    exec usp_M_SIDB_TransactionInformation_App_Append
        @moduleid, id, 'append' ,@createdby_userid
if @@ERROR <> 0
rollback tran @trans_name
commit tran @trans_name

применяется ли транзакция к этому .. даже следующий запрос вставки находится в другой хранимой процедуре ??

1 Ответ

3 голосов
/ 12 декабря 2011

Да, вызов usp_M_SIDB_TransactionInformation_App_Append является частью транзакции

Примечание: ваша обработка ошибок - "старый стиль" (с использованием @@ ERROR) из SQL Server 2000 и приведет к ошибкам (ошибка 266)если внутренний процесс откатывается или фиксируется.

Подробнее см. Вложенные хранимые процедуры, содержащие шаблон TRY CATCH ROLLBACK?

...