我有一个关于使用Transaction的问题。考虑下面的代码:
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事务处理是否仍适用于此..甚至下一个insert查询都在另一个存储过程上??
发布于 2011-12-12 17:06:22
是的,对usp_M_SIDB_TransactionInformation_App_Append的调用是事务的一部分
注意:您的错误处理是SQL Server 2000中的“旧风格”(使用@@ error ),如果内部进程回滚或提交,将生成错误(错误266)。
有关更多信息,请参阅Nested stored procedures containing TRY CATCH ROLLBACK pattern?
https://stackoverflow.com/questions/8471813
复制相似问题