Khorsun Vlad пишет:
Выноси (или дублируй) все связи parent->child всех уровней в отдельную таблицу и делай там PK\UK. Перед вставкой {a, b} пробуй вставить {b, a} - если получилось,
значит цикла нет и после вставки {a, b} можно удалять {b, a}.
   Не знаю, насколько такая схема жизнеспособна :)
Вроде бы, если под child понимать всех детей, а не только непосредственных, и пары закидывать для всех родителей, то должно работать.

Я думал в сторону "подпутей", но похоже, что таблица всех начал и концов здесь достаточна. :-)

   И как ты себе представляешь реализацию подобного внутри сервера ?
Ну, как ты описал, только без создания промежуточной таблицы и триггеров с СП.

Да, такой индекс позволит выбирать всё поддерево вообще без рекурсии, даже унутре сервера. :-)
--
Александр Замараев

Ответить