@@TRANCOUNT备忘

@@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 的将告诉您当前的交易记录是否仍然有效,或者如果它已自动回滚。


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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值