二、引出孤立事务:
1、孤立事务的产生
select @@trancount 当前连接的活动事务数 --当前连接的活动事务数为0
![]()
begin tran
![]()
select * from 一个不在的表
if @@error<>0
begin
print '没有执行到这里来!'
if @@trancount<>0 rollback tran
end
![]()
commit tran
![]()
select @@trancount 当前连接的活动事务数 --执行后你看看 当前连接的活动事务数为1,且重复执行会每次累加,这是很耗资源的。
![]()
应为rollback根本就没有被回滚。
![]()
2、使用现有手段解决孤立事务
print @@trancount print '当前连接的活动事务数' --当前连接的活动事务数为0
![]()
if @@trancount<>0 rollback tran --在这里写可以让孤立事务只保持到下次你的过程被调用
begin tran
![]()
select * from 一个不在的表
if @@error<>0
begin
print '没有执行到这里来!'
if @@trancount<>0 rollback tran
end
![]()
commit tran
![]()
---执行后你看看 当前连接的活动事务数为1,但重复执行不会累加
![]()
print @@trancount print '当前连接的活动事务数'
![]()