SQL Server 事務及回滾事務

iSQlServer發表於2010-08-18

第一種:

<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&gtdeclare   @iErrorCount   int 
set @iErrorCount = 0
begin tran Tran1
   
insert into t1(Id, c1) values(1,'1')
    
set @iErrorCount=@iErrorCount+@@error

   
insert into t1(Id, c1) values('XX2','2')
    
set @iErrorCount=@iErrorCount+@@error

if @iErrorCount=0 
begin   
    
COMMIT TRAN Tran1  --執行事務
end 
else   
begin   
    
ROLLBACK TRAN Tran1  --回滾事務
end


第二種:

<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&gtBegin Try
    
Begin Tran Tran1
        
insert into t1(Id, c1) values(1,'1')
        
insert into t1(Id, c1) values('XX2','2')  --此句產生錯誤
    COMMIT TRAN Tran1
END Try
Begin Catch 
    
raiserror 50005N'出錯了' 
    
ROLLBACK TRAN Tran1     ---出錯後呼叫回滾
END Catch 


第三種:

<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&gtSET XACT_ABORT ON ----語句產生執行時錯誤,則整個事務將終止並回滾。 
Begin Tran
    
INSERT INTO t1(Id, c1) VALUES(1,'1')
    
INSERT INTO t1(Id, c1) VALUES('XX2','2'--此句產生錯誤時,就會回滾整個事務
Commit Tran

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-671261/,如需轉載,請註明出處,否則將追究法律責任。

相關文章