Sql server SQL Server是否支持嵌套事务?
我想知道SQL Server是否支持嵌套事务 我可以看到其他类似的问题 还有-如何知道我是否在嵌套事务中 这似乎是个奇怪的问题。。但是 在SSMS中,我可能意外地多次运行命令Sql server SQL Server是否支持嵌套事务?,sql-server,transactions,nested,Sql Server,Transactions,Nested,我想知道SQL Server是否支持嵌套事务 我可以看到其他类似的问题 还有-如何知道我是否在嵌套事务中 这似乎是个奇怪的问题。。但是 在SSMS中,我可能意外地多次运行命令begintransaction。。例如这是否意味着我需要多次运行COMMIT事务,以完成事务 我认为嵌套事务通常应该避免 SELECT [Initial Assess - Sweating], COUNT(*) FROM Clinical.SAASCaseCards GROUP BY
begintransaction
。。例如这是否意味着我需要多次运行COMMIT事务
,以完成事务
我认为嵌套事务通常应该避免
SELECT
[Initial Assess - Sweating],
COUNT(*)
FROM
Clinical.SAASCaseCards
GROUP BY
[Initial Assess - Sweating]
BEGIN TRANSACTION;
UPDATE Clinical.SAASCaseCards
SET [Initial Assess - Sweating] = '1'
WHERE [Initial Assess - Sweating]= '01'
COMMIT TRANSACTION ;
据我所知,事务不能嵌套。是的,事务可以嵌套。但一旦外部事务失败,内部事务也将回滚
您可以使用全局变量@TRANCOUNT来查看其工作原理 如果您运行
选择@TRANCOUNT
并且周围没有事务,您将得到0
每次运行开始事务,@@TRANCOUNT增加1。
每次运行提交(事务)
时,@@TRANCOUNT减少1。如果将@TRANCOUNT设置为0,则事务确实已提交
另一方面,rollback(transaction)
会将@TRANCOUNT设置为0,并回滚所有更改,而不管当时@TRANCOUNT的值是多少
因此,没有功能嵌套。只有此计数器才能允许不同的模块进行自己的事务处理
我建议进一步阅读。嵌套事务是一个神话。下面是另一篇关于嵌套事务神话的优秀文章。很好的一个@Sean,事实上你的链接是我一直想找到的,但不在我的最爱列表中!