TSQL: ошибка триггера / транзакции ROLLBACK - PullRequest
0 голосов
/ 06 марта 2012

У меня есть триггер в TSQL, который я хотел бы сделать две вещи:

  1. Если столбец «Заблокирован» имеет значение ИСТИНА, он должен выполнять ROLLBACK TRANSACTION
  2. При этом он должен завершиться изящно.

    AFTER UPDATE 
    AS
    BEGIN
     IF (SELECT COUNT(*) FROM deleted WHERE Locked = 1)>0
     ROLLBACK TRANSACTION
    END
    

В настоящее время код откатывает нежелательные транзакции, но когда он это делает, он возвращает эту ошибку: «Транзакция завершилась в триггере. Пакет был прерван».

Есть ли способ выполнить ROLLBACK TRANSACTION в триггере и завершиться неудачно?

Спасибо.

1 Ответ

0 голосов
/ 06 марта 2012

Полагаю, вы могли бы перейти на триггер INSTEAD OF и выбрать, выполнять или не выполнять обновление, но это больше кода, так как вам придется выполнить обновление вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...