2010-06-03 45 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语句后重置,因此您必须在执行每个语句后立即检查它以检查是否有错误。