Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Здравствуйте!
Я внутри триггера делаю UPDATE записи из таблицы section, на которую этот триггер повешен:
Неактивен
Написанный код, если бы не был запрещен, мог бы привести к бесконечной рекурсии, так как апдейт должен вызвать тот же триггер, который вызовет снова апдейт. В заданной постановке обойти ограничение нельзя.
Неактивен
Е-мое! Спасибо! Теперь понятно почему нельзя этого делать!
Неактивен
Переделал пример триггера. Теперь видно, что рекурсия не бесконечная.
Неактивен
Можно ли в этом случае обойти ограничение?
Условие выхода из рекурсии есть:
Неактивен
Да, рекурсия не обязана быть бесконечной, поэтому такое ограничение есть не во всех базах данных. Но в MySQL ограничение есть, способа обойти не знаю.
Неактивен
А правда же Вы обновляете одну текущую строку? Нельзя обработать в NEW.xxx?
Неактивен
Нет, я там обновляю много строк (UPDATE вызывает каскадный вызов этого же триггера, по сути рекурсия).
Нашел способ обойти ограничение:
1) Структуру дерева вынес в отдельную таблицу.
2) Также создал таблицу с предками разделов (от родителя до корня).
Этого достаточно.
Спасибо rgbeast за подсказки!
Отредактированно khusamov (26.03.2013 05:41:01)
Неактивен
Страниц: 1