Задавайте вопросы, мы ответим
Вы не зашли.
Хотелось вызвать триггер BEFOR INSERT и изменить значение определенного поля в вызваной процедуре внутри триггера.
Т.е. есть триггер BEFOR INSERT, в нем вызывается процедура. В процедуре же, в зависимости от введенных данных новой строки должна измениться определенная строка в тоже таблице, к которой подвязан сам триггер. Ошибка говорит о том, что такое не возможно. Но все-таки неужели нельзя такое обойти? Ведь, как я понял, такая ошибка должна спасать от рекурсии, но при триггере на вставку и последующем обновлении какой-то строки рекурсии быть не может. Смысл тогда блокировать всю таблицу? Подскажите существует ли выход?
Для примера приведу укороченые коды триггера и процедуры.
триггер:
Отредактированно Receptor (05.09.2011 12:59:12)
Неактивен
Нет, обойти это нельзя, т.к. рекурсия все равно возможно (например, триггер BEFORE UPDATE,
который вставляет строки).
Неактивен
В этом случае я согласен, но в моем то такое невозможно. По идее нужно это учесть. Т.е. мне либо делать все это на событиях, процедурах, либо вообще не в mysql, так получаеся?
Неактивен
Именно так. Изменять ту же таблицу из триггера нельзя.
Можете, например, добавлять строку в другую таблицу, а раз в минуту проходиться
по этой другой таблице и доизменять данные.
Неактивен