powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Рекурсивное удаление в запросе
4 сообщений из 4, страница 1 из 1
Рекурсивное удаление в запросе
    #38849033
Проезжий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Существует табличка где есть два поля ID и Parent_ID
Соответственно по этим полям строится иерархия вложенности до десятка.
Нужно ID верхнего уровня удалить все дочерние элементы...

Подумал сделать так
Код: sql
1.
2.
3.
4.
 CREATE TRIGGER `delete_test` before delete ON `test`
FOR EACH ROW BEGIN
  Delete from test Where  Parent_ID = OLD.id;
END


Замысел весьма прост) но не работает - муксул возвращает ошибку - наверное таблица блокируется во время транзакции.
Можно это как то обойти или может есть другие простые решения задачи?
...
Рейтинг: 0 / 0
Рекурсивное удаление в запросе
    #38849487
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проезжиймуксул возвращает ошибку - наверное таблица блокируется во время транзакцииА не проще вместо [censored] предположений просто прочитать сообщение об ошибке?

Возможное решение - оформи удаление как рекурсивную процедуру.
...
Рейтинг: 0 / 0
Рекурсивное удаление в запросе
    #38849537
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проезжий,

вверху есть пришпиленная тема про деревья. Там есть решение Бочкова по выборке всех детишек одним махом. Вот, на базе этого запроса и надо что-то такое мутить.

Особенно, если количество уровней заранее не определено и не пофиксено в структуре данных.

Работает не сказать чтобы шустро, но работает.
...
Рейтинг: 0 / 0
Рекурсивное удаление в запросе
    #38849592
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПроезжийСуществует табличка где есть два поля ID и Parent_ID
Соответственно по этим полям строится иерархия вложенности до десятка.
Нужно ID верхнего уровня удалить все дочерние элементы...

Подумал сделать так
Код: sql
1.
2.
3.
4.
 CREATE TRIGGER `delete_test` before delete ON `test`
FOR EACH ROW BEGIN
  Delete from test Where  Parent_ID = OLD.id;
END


Замысел весьма прост) но не работает - муксул возвращает ошибку - наверное таблица блокируется во время транзакции.
Можно это как то обойти или может есть другие простые решения задачи?

FOREIGN KEY ON DELETE CASCADE
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Рекурсивное удаление в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]