Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在事务中执行语句-Sql Server 2005_Sql_Sql Server 2005_Transactions_Execute - Fatal编程技术网

在事务中执行语句-Sql Server 2005

在事务中执行语句-Sql Server 2005,sql,sql-server-2005,transactions,execute,Sql,Sql Server 2005,Transactions,Execute,我需要更新一个数据库,其中一些表已经更改(添加了列)。我希望在正确的事务中执行此操作。如果代码执行时没有任何问题,那么我将提交更改,否则我将回滚数据库到其原始状态 我想这样做: BEGIN TRANSACTION ...Execute some sql statements here COMMIT TRANSACTION (When every thing goes well) ROLLBACK TRANSACTION (When something goes wrong) 请告诉我最

我需要更新一个数据库,其中一些表已经更改(添加了列)。我希望在正确的事务中执行此操作。如果代码执行时没有任何问题,那么我将提交更改,否则我将回滚数据库到其原始状态

我想这样做:

BEGIN TRANSACTION
    ...Execute some sql statements here
COMMIT TRANSACTION (When every thing goes well)
ROLLBACK TRANSACTION (When something goes wrong)
请告诉我最好的方法是什么?我知道有一个@TranCount变量,但不知道它的确切用途

谢谢

Begin Transaction

Alter Table dbo.MyTable
Add Col1 varchar(50)

If @@Error = 0

   Begin
    Commit Transaction
   End
Else
   Begin
    Rollback Transaction
   End

@@错误会在每个SQL语句后重置,因此您必须在执行每个语句后立即检查错误以检查是否有错误。

请参阅:包含TRY-CATCH回滚模式的嵌套存储过程?: