Страница 1 из 1

Как предотвращают рекурсию триггеров?

Добавлено: 23 дек 2006, 14:01
shempeev
Здаствуйте.

При изменении таблицы в триггере на AFTER UPDATE

в зависимости от значения NEW.FIELD1 нужно поменять остальные
FIELD1 - что конечно вызывет рекурсию


Что в это случае делют?

Я вот подумал сначала- в начале "тела" триггера сделать его же не активным,
а вконце снова активировать

Но эти изменения не наступят ведь в силу до конца транзакции

Да и другие пользаватели могут наткнуться на неработающий триггер?

Как быть?

FireBird 1.5

Заранее спасибо

Re: Как предотвращают рекурсию триггеров?

Добавлено: 23 дек 2006, 14:46
stix-s
shempeev писал(а):Здаствуйте.

При изменении таблицы в триггере на AFTER UPDATE

в зависимости от значения NEW.FIELD1 нужно поменять остальные
FIELD1 - что конечно вызывет рекурсию


Что в это случае делют?

Я вот подумал сначала- в начале "тела" триггера сделать его же не активным,
а вконце снова активировать

Но эти изменения не наступят ведь в силу до конца транзакции

Да и другие пользаватели могут наткнуться на неработающий триггер?

Как быть?

FireBird 1.5

Заранее спасибо
а ты пробовал? и получил рекурсию? не верю

Re: Как предотвращают рекурсию триггеров?

Добавлено: 23 дек 2006, 15:48
dimitr
shempeev писал(а):При изменении таблицы в триггере на AFTER UPDATE в зависимости от значения NEW.FIELD1 нужно поменять остальные FIELD1
почему бы не использовать для этого триггер BEFORE UPDATE?

Re: Как предотвращают рекурсию триггеров?

Добавлено: 23 дек 2006, 16:24
shempeev
а ты пробовал? и получил рекурсию? не верю
Да да
Все правильно
Косяк был в другом

Просто
"Too many executions" - принял за многократный вызов

Спасибо, вопрос снят