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

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


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