在SQL SERVER中實現事務的部分回滾

廈門德仔發表於2010-09-26

在SQL SERVER中實現事務的部分回滾

1.儲存點:是一種實現部分回滾的方法。可以給一個儲存點起一個名字,以便在後面的事務中可以回滾到儲存點。
 
2.實現程式碼。
BEGIN TRANSACTION Transaction_Name
SQL_Statement1
SQL_Statement2    
SAVE TRANSACTION Save_Name --設定儲存點   
SQL_Statement3
SQL_Statement4
IF Test_Condition_Fails
    ROLLBACK TRANSACTION Save_Name --回滾到儲存點
SQL_Statement5
SQL_Statement6
COMMIT TRANSACTION Transaction_Name
BEGIN TRANSACTION Transaction_Name
SQL_Statement1
SQL_Statement2
SAVE TRANSACTION Save_Name --設定儲存點 
SQL_Statement3
SQL_Statement4
IF Test_Condition_Fails)  
BEGIN     
    ROLLBACK TRANSACTION Save_Name --回滾到儲存點
    RETURN
END
ELSE
BEGIN
    SQL_Statement5
    SQL_Statement6
END
COMMIT TRANSACTION Transaction_Name
 
3.如果沒有儲存點時,ROLLBACK命令後面只能跟最外層事務的名字,而不能跟其他事務的名字。不論ROLLBACK命令在巢狀那一層發生時,如果其後沒有事務名,則將事務回滾整個事務到頂層,這和回滾最外層事務是一樣的。在巢狀事務中,不能僅回滾某一層事務,除非你指定了一個儲存點,然後回滾到儲存點。

相關文章