Работа с триггерами

Столкнулся с интересной ситуацией при переводе проектного решения с версии 3.2 на версию 3.3. Карточка проекта не закрывалась при нажатии на кнопку OK. Запись в базе при этом сохранялась.

В результате отладки выяснил, что в 3.3 базовая карточка редактирования была доработана и теперь, если метод Post набора данных карточки возвращает 0, карточка не закрывается.

Метод Post набора данных возвращает количество строк, которые были затронуты при выполнении запроса. В моем случае, этот метод возвращал 0, несмотря на то, что запись сохранялась.

Более внимательный взгляд на таблицу проектов показал, что для нее есть несколько триггеров After Update, созданных в рамках проектного решения. Собственно, результат выполнения этих триггеров и возвращается методом Post в конечном итоге.

Чтобы все отрабатывало как нужно, и метод Post возвращал именно количество записей непосредственно затронутых запросом, в триггерах следует включать опцию NOCOUNT.

Для этого в каждом триггере первой строкой необходимо записать

SET NOCOUNT ON

Нравится

Поделиться

0 комментариев
Показать все комментарии