嵌套事务很容易出现“EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配”的错误。
为了解决这个问题我查找了很多资料,但都含糊不清,甚至莫名其妙。
最后综合微软官方的解释和网上的资料,终于找到了解决办法,主要是对于封装好的内部事务,可以完美实现多嵌套,不会影响任何外部事务。
内部事务代码举例如下:
BEGIN TRAN
SAVE TRAN s
....
--如果出错
BEGIN
ROLLBACK TRAN S
COMMIT TRAN
RETURN 0
END
....
COMMIT TRAN