我想知道SQL Server是否支持嵌套事务?
我可以看到其他类似的问题。
还-如何知道我是否在嵌套事务中?
这似乎是一个奇怪的问题。
在SSMS中,我可能无意中多次运行了BEGIN TRANSACTION
命令。例如..这是否意味着我需要多次运行COMMIT TRANSACTION
才能完成交易?
我认为通常应该避免嵌套事务。
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 ;
答案 0 :(得分:1)
您可以使用全局变量@@ TRANCOUNT来查看其工作原理。
如果您运行select @@TRANCOUNT
并且周围没有事务,您将获得0。
每次运行begin transaction
时,@@ TRANCOUNT都会增加1。
每次运行commit (transaction)
时,@@ TRANCOUNT都会减少1。如果将@@ TRANCOUNT设置为0,则将确实提交事务。
另一方面,rollback (transaction)
会将@@ TRANCOUNT设置为0,并回滚所有更改,而与@@ TRANCOUNT当时的值无关。
因此,没有功能嵌套。只有此计数器是为了允许不同的模块进行自己的事务处理。
我建议Erland Sommerskog's article供进一步阅读。
答案 1 :(得分:0)
是的,可以嵌套事务。但是一旦外部事务失败,内部事务也将回滚。
答案 2 :(得分:-2)
据我所知,事务不能嵌套。