powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Какой триггер сработает?
7 сообщений из 7, страница 1 из 1
Какой триггер сработает?
    #32005335
Sergy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация: для таблицы определены два триггера на встаку записи. Вопрос: в какой последовательности будут срабатывать тригеры и будет ли выполнен откат первого триггера, если не выполнился второй?
...
Рейтинг: 0 / 0
Какой триггер сработает?
    #32005337
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу последовательности срабатывания триггеров BOL говорит, что нельзя гарантировать порядок их работы и закладываться на это нельзя. Откат первого триггера в случае rollback во втором произойдет _обязательно_ , поскольку вся операция выполняется в единой транзакции.
Реально хочу сказать, что порядок срабатывания у меня всегда совпадал с порядком их создания, но брать это как гарантию все же не стоит.
...
Рейтинг: 0 / 0
Какой триггер сработает?
    #32005360
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу дополнить ответ. В версии 2000 можно указать, какой из триггеров должен выполняться первым, а какой последним. Если триггеров более двух, то для всех остальных порядок выполнения теоретически не является определенным. Для версии 7.0 нельзя стопроцентно гарантировать последовательность выполнения триггеров. Есть подозрение, что после модификации какого-нибудь из них порядок может измениться.
Вообще, множественность однотипных триггеров допускается только в тех случаях, когда порядок их выполнения не имеет значения. А вот ежели он имеет значение, то желательно объединить скрипт нескольких триггеров в одном триггере.
...
Рейтинг: 0 / 0
Какой триггер сработает?
    #32005362
Сорри может вопрос не по теме, но зачем писать, триггеров ( на вставку например), больше чем один ??
По идее каждый вызов триггера замедляет процесс вставки, потом вносится путаница что и за чем выполняется ну и т.д.
Или же всетаки есть задачи в которых не обоитись одним триггером ( на вставку например).

Спасибо
...
Рейтинг: 0 / 0
Какой триггер сработает?
    #32005372
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разнесение бизнес-логики по разным триггерам оправдано в случае, если эти куски относятся к разной бизнес-логике. Чаще всего они при этом никак не связаны последовательностью выполнения. Чтобы принудительно заставить триггер срабатывать первым или последним, используйте sp_settriggerorder. Промежуточные триггеры будут выполняться в порядке создания. Однако, как справедливо заметил Garya, этот порядок нарушится, стоит Вам употребить ALTER TRIGGER.
...
Рейтинг: 0 / 0
Какой триггер сработает?
    #32005389
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совершенно верно. Реальный пример для update - один триггер не позволяет изменять predefined объекты (имеющие флажок Predefined = 1), а второй ведет лог изменений (например, какой юзер выполнял операцию). В общем-то все логично - если действия должны выполняться в определенной последовательности, то они связаны и должны быть помещены в один триггер. А если они независимы, то порядок выполнения не должен иметь значения и их можно разнести по разным триггерам.
...
Рейтинг: 0 / 0
Какой триггер сработает?
    #32005407
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично я использую несколько однотипных триггеров ТОЛЬКО в следующей ситуации:
1. Если последовательность их запуска значения не имеет.
2. Если необходимо включить один скрипт на совокупность нескольких событий (например, for Insert, Update, Delete), а другой скрипт только на одно из них (нарпимер, for Delete).
В общем-то, дело вкуса...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Какой триггер сработает?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]