SQL事務回滾的問題及其解決的方法
阿新 • • 發佈:2019-02-05
Begin Transaction:開始一個事務;
Commit Transaction:提交事務;
Rollback Transaction:回滾事務。
其中Commit Transaction 與Rollback Transaction 都必須有對應的Begin Transaction 才能正確被執行。
如:
Begin Tran
……
Rollback Tran
Commit Tran
以上事務只執行了回滾操作。執行Commit Tran系統會返回3902錯誤,即@@Error=3902,COMMIT ,http://www.bj999.cn/yinchan/11290.shtml,TRANSACTION 請求沒有對應的 BEGIN TRANSACTION。
Begin Tran
……
Commit Tran
Rollback Tran
以上事務員執行了提交事務操作。執行Rollback Tran系統會返回3903錯誤,即@@Error=3903,ROLLBACK TRANSACTION 請求沒有對應的 BEGIN TRANSACTION。
例項:使用@@Error返回值來控制回滾
設有表a,有欄位num (int),name (varchar(20));表b,有欄位num (int),Add (varchar(50))。以下是一個儲存過程,使用了@@Error的返回值來控制元件事件回滾:
Commit Transaction:提交事務;
Rollback Transaction:回滾事務。
其中Commit Transaction 與Rollback Transaction 都必須有對應的Begin Transaction 才能正確被執行。
如:
Begin Tran
……
Rollback Tran
Commit Tran
以上事務只執行了回滾操作。執行Commit Tran系統會返回3902錯誤,即@@Error=3902,COMMIT ,http://www.bj999.cn/yinchan/11290.shtml,TRANSACTION 請求沒有對應的 BEGIN TRANSACTION。
Begin Tran
……
Commit Tran
Rollback Tran
以上事務員執行了提交事務操作。執行Rollback Tran系統會返回3903錯誤,即@@Error=3903,ROLLBACK TRANSACTION 請求沒有對應的 BEGIN TRANSACTION。
例項:使用@@Error返回值來控制回滾
設有表a,有欄位num (int),name (varchar(20));表b,有欄位num (int),Add (varchar(50))。以下是一個儲存過程,使用了@@Error的返回值來控制元件事件回滾: