我有存储过程,开始新事务进行数据操作。程序本身在另一个交易中执行 我对手术前的情况没有影响。它可能会改变。
我的想法是在开始嵌套事务之前检查@@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;