powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 LUW множественные триггеры на одно и тоже событие
9 сообщений из 9, страница 1 из 1
DB2 LUW множественные триггеры на одно и тоже событие
    #36235994
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, помогите понять для чего нужны множественные триггеры (multiple triggers).
Т.е. например - на update можно повесить несколько триггеров.
В чём смысл такого дизайна и есть ли случаи когда нельзя обойтись одним триггером.

В доке ( тынц ) приводится пример который запросто можно реализовать и в одном триггере просто поместив оба update в одну транзакцию.

Заранее большое спасибою
...
Рейтинг: 0 / 0
DB2 LUW множественные триггеры на одно и тоже событие
    #36236436
Alexey Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kru,
Ну например в разных триггерах можно проверять РАЗНЫЕ доп-условия, например, в одном проверить имя компа, а в другом имя юзера.
...
Рейтинг: 0 / 0
DB2 LUW множественные триггеры на одно и тоже событие
    #36236437
Alexey Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме того, разные триггеры можно по раздельности включать/выключать, а когда один но большой триггер - как это сделать?
...
Рейтинг: 0 / 0
DB2 LUW множественные триггеры на одно и тоже событие
    #36236596
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey KuznetsovКроме того, разные триггеры можно по раздельности включать/выключать, а когда один но большой триггер - как это сделать?В db2 нет отдельных команд включения или выключения триггеров.
Если вы хотите иметь такую возможность, вы специально должны программировать триггер срабатывать так, чтоб он срабатывал только если в какой-то служебной таблице установлен флаг соответственно или использовать глобальные переменные.

А по вопросу - действительно, у вас может быть разная логика в разных триггерах, не зависящая друг от друга. И чтоб изменить одну из этих логик, не надо дропать всю логику, а только её часть.
Кроме того, drop trigger может иметь эффект на пакеты ( Modifying and dropping triggers ), так что инвалидировать а потом пересвязывать (пусть даже и неявно) пакеты, которые можно бы и не трогать - тоже полезно.
...
Рейтинг: 0 / 0
DB2 LUW множественные триггеры на одно и тоже событие
    #36238329
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо - если я правильно понял, то множественные триггеры применяются для удобства поддержки.
Т.е. всегда можно создать один большой триггер, но его поддержка может оказаться накладною

В частности - если например логика может сильно разниться в зависимости от обновляемой колонки, то имеет смысл написать разные триггеры по одному на каждую колонку.

В случае, когда нужно будет обновить логику, достаточно будет только пересоздать один триггер, в результате чего будут перепревязанны пакаджи которые обновляют или добавляют записи в эту колонку.

Правильно ли это?

Заранее большое спасибо
...
Рейтинг: 0 / 0
DB2 LUW множественные триггеры на одно и тоже событие
    #36238783
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё совсем недавно (по моим меркам) в DB2 не было ни SQL PL, ни CALL в триггере. Иными словами, из триггера мало что можно было сделать. А кое что можно было сделать лишь определённой последовательностью триггеров. (Имейте в виду, что триггеры выполняются в порядке создания; поэтому для изменения одного, чтобы сохранился корректный порядок, может потребоваться пересоздать их все).

Но множественные триггеры полезны смысл и сейчас. Пример (из одной из работающих у нас баз; правда, на Oracle. но это неважно): система разбита на N подсистем. У каждой подсистемы могут быть отдельные разработчики, и не все подсистемы поставляются каждому заказчику. Если подсистема XXX заинтересована в триггере на таблице TTT (необязательно той же подсистемы), он будет называться в духе XXX_TTT_что-то-там. Таким образом, подсистемы не так сильно зависят друг от друга и разработчики мешают друг другу не так сильно, как могли бы.
...
Рейтинг: 0 / 0
DB2 LUW множественные триггеры на одно и тоже событие
    #36238929
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kru,

Про пакеты я неправильно написал. Там разница 1 или несколько триггеров может быть в том, что разные триггеры могут работать с разными объектами, и если с каким-то объектом что-то случилось (дропнули, например), то инвалидным станент только те триггеры, которые с ним работают.
Т.е. основное преимущество - удобство поддержки.
...
Рейтинг: 0 / 0
DB2 LUW множественные триггеры на одно и тоже событие
    #36239014
Alexey Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinВ db2 нет отдельных команд включения или выключения триггеров.
А было бы полезно :) Может как-то запостить куда-нить такой фича реквест в IBM?

В Firebird-е например есть:
Код: plaintext
1.
 ALTER TRIGGER name ACTIVE | INACTIVE: activate/deactivate a trigger

А так вы правы. Мы в своем проекте мутили таблицу типа TRIGGER_LOCKS
в котороую триггеры лазили что бы посомтреть, надо ли срабатывать или нет

А еще в DB2 9.7 появились глобальные переменные сессии - теперь используя их я думаю можно "выключать" триггеры только для нужной сесиии, что весьма может пригодлится например, для системных задач по массовой закачке, так как очень часто триггеры СИЛЬНО замедляют работу.
...
Рейтинг: 0 / 0
DB2 LUW множественные триггеры на одно и тоже событие
    #36240244
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем огромное спасибо!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 LUW множественные триггеры на одно и тоже событие
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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