Подъемник SQL Server молчание сообщение - PullRequest
0 голосов
/ 07 мая 2009

Как я могу использовать ROLLBACK TRANS внутри триггера SQL Server без получения стандартного сообщения?

"Msg 3609, Уровень 16, Состояние 1, Строка 1 Транзакция завершилась в триггере. Пакет был прерван. "

Это возвращается клиенту. Я бы хотел, чтобы ROLLBACK завершился беззвучно. Мне нужно достичь этого только внутри триггера; т.е. нет изменений в коде c # или .NET для записи сообщения об ошибке.

Позвольте мне добавить, что это «грязный» обходной путь для недавно добавленной функциональности. Когда мы добавили новую функциональность, клиенту это не понравилось. Вместо этого сделайте экстренный выпуск кодовой базы, мы только что убили обновление внутри триггера. Вызывающий код встроен в клиентское приложение SQL, а не в сохраненный процесс.

Ответы [ 2 ]

1 голос
/ 09 ноября 2009

Вам нужен триггер INSTEAD OF , который фактически ничего не делает с обновленными строками.

1 голос
/ 07 мая 2009

Проблема в том, что откат внутри триггера означает, что строки, вставленные / обновленные или удаленные в базовой таблице, вернулись в прежнее состояние, что означает, что базе данных не удалось выполнить то, что запрашивала исходная программа.

Ваш код вызова обновляет таблицу напрямую или вызывает хранимую процедуру, которая обновляет таблицу? Последний предлагает больше возможностей для бесшумной обработки отката.

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