2012-05-21 2 views
1

у меня есть таблица:процедура MySQL для удаления связанных строк

id parent name 

Теперь родительское поле является идентификатором другого ряда. я не могу использовать триггер для этого, как говорит MySQL:

Невозможно обновить таблицу «products_categories» в хранимой функции/триггер, так как он уже используется заявлением, которое вызывается этот хранимая функция/триггер.

Как процедура должна выглядеть как удалить все строки, у которых есть родительский элемент, такой как удаленный идентификатор?

+0

Вам нужны только дети или все потомки? –

+0

ссылка http://stackoverflow.com/questions/2334478/mysql-triggers-cannot-update-rows-in-same-table-the-trigger-is-assigned-to-sugg –

+0

@ srini.venigalla Предположим, я удаляю ID = 40. Затем триггер/процедура должна удалить все строки с родительским = 40. Когда он удаляет все остальные, триггер/процедура также должны работать для них. – rzeka

ответ

0

Вы можете вызвать процедуру рекурсивно. Процедура должна сделать следующее:

  • Чтение parent значение в переменные
  • Удалить запись (по его id)
  • Если parent значения не NULL - снова вызвать процедуру и передать parent значения, как и в аргументе ,

Проверка сервер переменной max_sp_recursion_depth - количество раз, что хранимая процедура может вызывать себя.

Смежные вопросы