Выполнение операторов в транзакции - Sql Server 2005 - PullRequest
2 голосов
/ 03 июня 2010

Мне нужно обновить базу данных, где некоторые таблицы были изменены (столбцы были добавлены). Я хочу выполнить это действие в правильной транзакции. Если код выполняется без проблем, я внесу изменения, в противном случае я верну базу данных в исходное состояние.

Я хочу сделать что-то вроде этого:

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

Пожалуйста, скажите мне, как лучше всего это сделать, я знаю, что есть переменная @@ TranCount, но не знаю ее точное назначение.

Спасибо.

1 Ответ

4 голосов
/ 03 июня 2010
Begin Transaction

Alter Table dbo.MyTable
Add Col1 varchar(50)

If @@Error = 0

   Begin
    Commit Transaction
   End
Else
   Begin
    Rollback Transaction
   End

@@ Ошибка сбрасывается после каждого оператора SQL, поэтому необходимо проверить его сразу после выполнения каждого оператора, чтобы проверить наличие ошибок.

...