begin tran a1
declare rs cursor scroll for select a=1
open rs
declare @a int begin tran b1
set @a='1a' --错误行
commit tran b1 close rs
deallocate rs
print 'bbbb'
commit tran a1
print 'aaaa'为什么他不打印bbbb, aaaa呢? 即为什么不执行事务之后的语句呢??
declare rs cursor scroll for select a=1
open rs
declare @a int begin tran b1
set @a='1a' --错误行
commit tran b1 close rs
deallocate rs
print 'bbbb'
commit tran a1
print 'aaaa'为什么他不打印bbbb, aaaa呢? 即为什么不执行事务之后的语句呢??
declare rs cursor scroll for select a=1
open rs
declare @a int begin tran b1
set @a='1a' --错误行
commit tran b1 close rs
deallocate rs
print 'bbbb'
commit tran a1
go
print 'aaaa'
--估計裡面發生錯誤,回滾了
貌似SQL2005的Try可以做到這個.
begin tran
insert into code_login_user (username) values ('jjj')
commit tran
print 'bbbb'
--回滚后不会再执行。 严重错误
declare @i int
begin tran
set @i='aa'
commit tran
print 'bbbb'