@@TRANCOUNT 是一个全局变量,包含当前的用户连接的当前活动事务数。此全局变量可用于在一个 BEGIN 事务...COMMIT 事务组的中间确定当 (和如果) 时的事务已回滚。
@@TRANCOUNT 变量就会增加每次启动新事务时使用一个 BEGIN 事务命令。当在执行 COMMIT 事务命令或已回滚该事务时,它会递减。可以通过使用 SELECT @@TRANCOUNT 命令访问此全局变量。
[color=blue][b]当使用只能有一个事务 @@TRANCOUNT 在交易记录之前为0 。BEGIN 事务命令执行后,@@ TRANCOUNT变为 1 。如果成功完成事务 @@TRANCOUNT 将保留 1,直到执行 COMMIT 事务的命令。此后,@@TRANCOUNT 再次为 0。但是,如果遇到错误,导致回滚整个事务,@@ TRANCOUNT 将被设置为 0。这会发生之前执行该 COMMIT 事务命令[/b][/color]。
分别执行交易记录的每个语句时,此功能特别有用。某些错误将导致事务回滚时其他人将不会。当您收到一条错误消息时,快速检查 @@TRANCOUNT 的将告诉您当前的交易记录是否仍然有效,或者如果它已自动回滚。
详细参考:[url]http://msdn.microsoft.com/zh-cn/library/ms187967.aspx[/url]
@@TRANCOUNT 变量就会增加每次启动新事务时使用一个 BEGIN 事务命令。当在执行 COMMIT 事务命令或已回滚该事务时,它会递减。可以通过使用 SELECT @@TRANCOUNT 命令访问此全局变量。
[color=blue][b]当使用只能有一个事务 @@TRANCOUNT 在交易记录之前为0 。BEGIN 事务命令执行后,@@ TRANCOUNT变为 1 。如果成功完成事务 @@TRANCOUNT 将保留 1,直到执行 COMMIT 事务的命令。此后,@@TRANCOUNT 再次为 0。但是,如果遇到错误,导致回滚整个事务,@@ TRANCOUNT 将被设置为 0。这会发生之前执行该 COMMIT 事务命令[/b][/color]。
分别执行交易记录的每个语句时,此功能特别有用。某些错误将导致事务回滚时其他人将不会。当您收到一条错误消息时,快速检查 @@TRANCOUNT 的将告诉您当前的交易记录是否仍然有效,或者如果它已自动回滚。
SELECT '事务处理前', @@TRANCOUNT --值为 0
BEGIN TRAN
SELECT '第一个事务', @@TRANCOUNT --值为 1
-- SELECT 'aa'
BEGIN TRAN
SELECT '第二个事务', @@TRANCOUNT --值为 2
-- SELECT 'bb'
COMMIT TRAN
SELECT '递交第二个事务', @@TRANCOUNT --值为 1
ROLLBACK TRAN
SELECT '回滚第一个事务', @@TRANCOUNT --值为 0
SELECT '事务处理前', @@TRANCOUNT --值为 0
BEGIN TRAN
SELECT '第一个事务', @@TRANCOUNT --值为 1
-- SELECT 'aa'
SAVE TRAN t1
SELECT '保存第一个事务后', @@TRANCOUNT --值为 1
BEGIN TRAN
SELECT '第二个事务', @@TRANCOUNT --值为 2
-- SELECT 'bb'
ROLLBACK TRAN t1
SELECT '回滚到保存点t1', @@TRANCOUNT --注意这里的值为 2
IF @@TRANCOUNT>0
ROLLBACK TRAN
SELECT '处理结束', @@TRANCOUNT --为 0
详细参考:[url]http://msdn.microsoft.com/zh-cn/library/ms187967.aspx[/url]