Форум → Разработка → Базы данных → Delete childs... MySql
Delete childs... MySql
-
-
-
28 марта 2012 г. 22:26, спустя 1 минуту 55 секунд
Связка по айди, таблица та-же?
я думал это вопрос и надо выбрать :-)
ну тогда все равно тригер, думаю что решение есть эни вей, осталось его найти) если не влом будет даже посмотрю, интересная задачкаСапожник без сапог -
28 марта 2012 г. 22:29, спустя 2 минуты 53 секунды
да знаю… где-то нарыл что форейн неи работают… нот увы это не так (проверял на инодб). Тригеры точно не работают- ограничения есть на оф сайте… вот и блин не знаю даже… то ли выборку делать ин потом "уэр ин", хотя тут с любой стороны косячёк получается. Короче будет очень интерестно найти безкостыльное решение. -
29 марта 2012 г. 0:02, спустя 1 час 33 минуты 9 секунд
FK onDelete="CASCADE" для той же таблицы не работает. Так что руцями нужно подчищать все. У нас схема Ajarency Lists + Closure Table - так что удалить всех потомков очень легко -
29 марта 2012 г. 1:20, спустя 1 час 17 минут 34 секунды
В чём проблема выполнения дополнительного запроса? Один хрен связь то же самое сделает -
-
29 марта 2012 г. 4:38, спустя 2 часа 49 минут 16 секунд
это нужно в скрипте делать, а не в базе, потому что с записями могут быть ассоциированы нетабличные данные, например, файлы. а для защиты целостности нужно вешать внешние ключи ON DELETE NO ACTION ON UPDATE NO ACTIONне всё полезно, что в swap полезло -
29 марта 2012 г. 9:34, спустя 4 часа 55 минут 30 секунд
Ivan, а если это дерево?
Ну, разве что в таком случае -
29 марта 2012 г. 11:16, спустя 1 час 41 минуту 59 секунд
Тоже нигде не используем CASCADE. Только вместо NO ACTION юзаем RESTRICT. Для mysql разницы нет, а вот в других бд отличие в том, что но экшен проверяется в конце транзакции, а рестрикт непосредственно во время попытки удаления строки, поэтому, если транзакция сложная, возникающая ошибка отлавливается чуть раньше.
это нужно в скрипте делать, а не в базе, потому что с записями могут быть ассоциированы нетабличные данные, например, файлы. а для защиты целостности нужно вешать внешние ключи ON DELETE NO ACTION ON UPDATE NO ACTION
Вообще есть ли смысл при удалении нода удалять и все дочерние узлы? Просто есть реально деревянные люди, которые никогда не читают то, что выскакивает в попап окошках: например на сайте при удалении не пустого раздела выскакивает окошко с сообщением "В разделе находится 100500 статей и 100600 подразделов, при удалении все они будут удалены. Вы действительно хотите удалить этот раздел?", и человек по привычке тыкает, да, удалить, и песец, потом истерики, да как же так, я две недели статьи строчила, что за херня. Поэтому лучшим поведением будет либо не удалять не пустые узлы, а заставлять перед этим всё внутри ручками удалить или перместить в другой узел, либо удалять сам узел, а всех его детей поднимать на уровень выше на место удалённого узла.Work, buy, consume, die -
29 марта 2012 г. 11:54, спустя 38 минут 37 секунд
либо удалять сам узел, а всех его детей поднимать на уровень выше на место удалённого узла.
пиздец бесит такое поведение )а заставлять перед этим всё внутри ручками удалить или перместить в другой узел
вот это ужо другое дело, еще если есть bulk-actions то вообще супер )Просто есть реально деревянные люди, которые никогда не читают то, что выскакивает в попап окошках
+100500 ))) -
29 марта 2012 г. 18:35, спустя 6 часов 40 минут 12 секунд
Nyaah, как вариант - не удалять, а помечать к удалениюне всё полезно, что в swap полезло -
29 марта 2012 г. 22:17, спустя 3 часа 41 минуту 59 секунд
в фронтенде данные показаны ввиде дерева- по этому будет логично удалять все дотчерние записи… реализавал не в мускуле а как изначально было в мыслях- код конечно пару строчек и не сложный, но вот думал можно что-то скюэльное нарытьСпустя 158 сек.… Ajarency Lists (если точнее adjarency)- это то с чем я не сталкивался после окончания изучения графов…
Пожалуйста, авторизуйтесь, чтобы написать комментарий!