Rollback the inner transaction of nested transaction

后端 未结 5 1869
天命终不由人
天命终不由人 2020-12-05 02:43

suppose I have following sql statement in sql server 2008:

BEGIN TRANSACTION    
SqlStatement1    
EXEC sp1    
SqlStatement3
COMMIT TRANSACTION
5条回答
  •  情话喂你
    2020-12-05 03:26

    Rollback transaction on its own rolls back all transactions.

    http://msdn.microsoft.com/en-us/library/ms181299(v=sql.100).aspx

    The statement will still be executed - try this

    create table #t (i int)
    insert #t values (1)  -- t contains (1)
    
    begin tran
        update #t set i = i +1
        select * from #t  -- t contains (2)
        begin tran
            update #t set i = i +1 
            select * from #t -- t contains (3)
        rollback tran  -- transaction is rolled back
    
    select * from #t -- t contains (1)
    update #t set i = i +1
    select * from #t -- t contains (2)
    commit    -- error occurs
    select * from #t -- t contains (2)
    drop table #t
    

提交回复
热议问题