|
MySQL.RU - Webboard
Вернуться
рекурсивная функция для дерева (slaytor) 21/04/2011 - 17:16:38
Re: рекурсивная функция для дерева (Akina) 21/04/2011 - 18:50:25
Re: рекурсивная функция для дерева (slaytor) 21/04/2011 - 19:13:15
Re: простой запрос (Akina) 21/04/2011 - 20:32:35
From: slaytor - 21/04/2011 - 17:16:38
Subject:рекурсивная функция для дерева
-----------------
Столкнулся с задачей, на мой взгляд не особо оригинальной и многие в сайтостроении пользуется подобными схемами.
Нагуглить толком ничего не получилось, вот обращаюсь за помощью к местным гуру.
Постараюсь как можно подробнее описать ситуацию.
Есть таблица:
CREATE TABLE IF NOT EXISTS docs (
doc_id BIGINT
UNSIGNED AUTO_INCREMENT,
parent_id BIGINT UNSIGNED,
friendurl TINYTEXT,
PRIMARY KEY (doc_id)
);
Поле parent_id - ссылка на doc_id, т. е. таблица представляет из себя дерево с бесконечным уровнем вложенности.
Таблица заполнена и база используется.
Для начала нужно добавить уникальное поле sys_furl с типом tinytext.
С этим сразу же появилась проблема, если я правильно понял, то не бывает таблиц где есть и primary key и unique полей одновременно... может и ошибаюсь..
Вопрос первый:
Как же правильно добавить это поле чтобы оно было уникальным и ничего не сломать?
Поле sys_furl должно содержать склеенные friendurl родительских записей со своей на конце .
Пример данных:
doc_id = 1
friendurl = '/catalog'
parent_id = 0
sys_furl = '/catalog'
doc_id = 2
friendurl = '/cpu'
parent_id = 1
sys_furl = '/catalog/cpu'
doc_id = 3
friendurl = '/corei7'
parent_id = 2
sys_furl = '/catalog/cpu/corei7'
Дальше хочу создать рекурсивную функцию, которая при изменении friendurl меняет sys_furl у всех дочерних записей.
Подскажите возможно ли это сделать хранимой процедурой/функцией mysql?
Если можно, то как примерно это реализовать?
Спасибо.
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
38326
|
|