Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
DB2 LUW множественные триггеры на одно и тоже событие
|
|||
|---|---|---|---|
|
#18+
Господа, помогите понять для чего нужны множественные триггеры (multiple triggers). Т.е. например - на update можно повесить несколько триггеров. В чём смысл такого дизайна и есть ли случаи когда нельзя обойтись одним триггером. В доке ( тынц ) приводится пример который запросто можно реализовать и в одном триггере просто поместив оба update в одну транзакцию. Заранее большое спасибою ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2009, 19:13 |
|
||
|
DB2 LUW множественные триггеры на одно и тоже событие
|
|||
|---|---|---|---|
|
#18+
Kru, Ну например в разных триггерах можно проверять РАЗНЫЕ доп-условия, например, в одном проверить имя компа, а в другом имя юзера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2009, 08:33 |
|
||
|
DB2 LUW множественные триггеры на одно и тоже событие
|
|||
|---|---|---|---|
|
#18+
Кроме того, разные триггеры можно по раздельности включать/выключать, а когда один но большой триггер - как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2009, 08:34 |
|
||
|
DB2 LUW множественные триггеры на одно и тоже событие
|
|||
|---|---|---|---|
|
#18+
Alexey KuznetsovКроме того, разные триггеры можно по раздельности включать/выключать, а когда один но большой триггер - как это сделать?В db2 нет отдельных команд включения или выключения триггеров. Если вы хотите иметь такую возможность, вы специально должны программировать триггер срабатывать так, чтоб он срабатывал только если в какой-то служебной таблице установлен флаг соответственно или использовать глобальные переменные. А по вопросу - действительно, у вас может быть разная логика в разных триггерах, не зависящая друг от друга. И чтоб изменить одну из этих логик, не надо дропать всю логику, а только её часть. Кроме того, drop trigger может иметь эффект на пакеты ( Modifying and dropping triggers ), так что инвалидировать а потом пересвязывать (пусть даже и неявно) пакеты, которые можно бы и не трогать - тоже полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2009, 10:05 |
|
||
|
DB2 LUW множественные триггеры на одно и тоже событие
|
|||
|---|---|---|---|
|
#18+
Большое спасибо - если я правильно понял, то множественные триггеры применяются для удобства поддержки. Т.е. всегда можно создать один большой триггер, но его поддержка может оказаться накладною В частности - если например логика может сильно разниться в зависимости от обновляемой колонки, то имеет смысл написать разные триггеры по одному на каждую колонку. В случае, когда нужно будет обновить логику, достаточно будет только пересоздать один триггер, в результате чего будут перепревязанны пакаджи которые обновляют или добавляют записи в эту колонку. Правильно ли это? Заранее большое спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2009, 19:00 |
|
||
|
DB2 LUW множественные триггеры на одно и тоже событие
|
|||
|---|---|---|---|
|
#18+
Ещё совсем недавно (по моим меркам) в DB2 не было ни SQL PL, ни CALL в триггере. Иными словами, из триггера мало что можно было сделать. А кое что можно было сделать лишь определённой последовательностью триггеров. (Имейте в виду, что триггеры выполняются в порядке создания; поэтому для изменения одного, чтобы сохранился корректный порядок, может потребоваться пересоздать их все). Но множественные триггеры полезны смысл и сейчас. Пример (из одной из работающих у нас баз; правда, на Oracle. но это неважно): система разбита на N подсистем. У каждой подсистемы могут быть отдельные разработчики, и не все подсистемы поставляются каждому заказчику. Если подсистема XXX заинтересована в триггере на таблице TTT (необязательно той же подсистемы), он будет называться в духе XXX_TTT_что-то-там. Таким образом, подсистемы не так сильно зависят друг от друга и разработчики мешают друг другу не так сильно, как могли бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2009, 07:11 |
|
||
|
DB2 LUW множественные триггеры на одно и тоже событие
|
|||
|---|---|---|---|
|
#18+
Kru, Про пакеты я неправильно написал. Там разница 1 или несколько триггеров может быть в том, что разные триггеры могут работать с разными объектами, и если с каким-то объектом что-то случилось (дропнули, например), то инвалидным станент только те триггеры, которые с ним работают. Т.е. основное преимущество - удобство поддержки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2009, 09:32 |
|
||
|
DB2 LUW множественные триггеры на одно и тоже событие
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinВ db2 нет отдельных команд включения или выключения триггеров. А было бы полезно :) Может как-то запостить куда-нить такой фича реквест в IBM? В Firebird-е например есть: Код: plaintext 1. А так вы правы. Мы в своем проекте мутили таблицу типа TRIGGER_LOCKS в котороую триггеры лазили что бы посомтреть, надо ли срабатывать или нет А еще в DB2 9.7 появились глобальные переменные сессии - теперь используя их я думаю можно "выключать" триггеры только для нужной сесиии, что весьма может пригодлится например, для системных задач по массовой закачке, так как очень часто триггеры СИЛЬНО замедляют работу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2009, 10:08 |
|
||
|
|

start [/forum/topic.php?fid=43&fpage=75&tid=1603061]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 161ms |

| 0 / 0 |
