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