2010-06-03 70 views
2

我需要更新一些數據庫已更改(已添加列)的數據庫。我想在正確的交易中執行此操作。如果代碼執行沒有任何問題,那麼我會提交更改,否則我會回滾數據庫回到其原始狀態。執行交易中的語句 - Sql Server 2005

我想要做這樣的事情:

BEGIN TRANSACTION 
    ...Execute some sql statements here 
COMMIT TRANSACTION (When every thing goes well) 
ROLLBACK TRANSACTION (When something goes wrong) 

請告訴我什麼是做到這一點,我知道有一個,@@ trancount變量,但不知道它的確切目的的最佳途徑。

謝謝。

+1

請參閱:包含TRY CATCH ROLLBACK模式的嵌套存儲過程?http://stackoverflow.com/questions/2073737/nested-stored-procedures-containing-try-catch-rollback-pattern – 2010-06-03 07:08:37

回答

4
Begin Transaction 

Alter Table dbo.MyTable 
Add Col1 varchar(50) 

If @@Error = 0 

    Begin 
    Commit Transaction 
    End 
Else 
    Begin 
    Rollback Transaction 
    End 

@@錯誤在每個SQL語句後重置,因此您必須在執行每個語句後立即檢查它以檢查是否有錯誤。