开始交易...提交交易问题

时间:2011-12-12 08:51:53

标签: sql sql-server-2008 stored-procedures transactions

我对使用交易有疑问。请考虑以下代码:

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 个答案:

答案 0 :(得分:3)

是的,对usp_M_SIDB_TransactionInformation_App_Append的调用是交易的一部分

注意:您的错误处理是SQL Server 2000中的“旧样式”(使用@@ ERROR),如果内部进程回滚或提交,将产生错误(错误266)。

有关详情,请参阅Nested stored procedures containing TRY CATCH ROLLBACK pattern?