Sql Server嵌套事务回滚@@ TRANCOUNT

时间:2014-08-18 13:04:33

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

我有存储过程,开始新事务进行数据操作。程序本身在另一个交易中执行 我对手术前的情况没有影响。它可能会改变。

我的想法是在开始嵌套事务之前检查@@TRANCOUNT。然后在catch块中再次检查@@TRANCOUNT并进行比较。在任何情况下,我都不希望外部事务被回滚。所以我想知道我对这段代码是否安全?

谢谢你的帮助!

SET @TRANSCOUNTBEFORE = @@TRANCOUNT; 
BEGIN TRANSACTION tx;
BEGIN TRY
  /* some data manipulation here */
  COMMIT TRANSACTION tx;       
END TRY            
BEGIN CATCH
  IF @@TRANCOUNT > @TRANSCOUNTBEFORE ROLLBACK TRANSACTION tx;
  /* some error handling here */   
END CATCH;

0 个答案:

没有答案
相关问题