Любой способ рекурсивного обновления дерева в SQL? - PullRequest
0 голосов
/ 14 ноября 2009

У меня есть таблица базы данных, которая представляет собой группу деревьев. Первые три столбца - это GUID, которые выглядят так:

NODE_ID (PK)
PARENT_NODE_ID (FK to same table, references NODE_ID)
TREE_ID (FK to another table)

Возможно переместить узел в другое дерево. Сложная часть приносит все свои дочерние узлы с этим. Это требует рекурсивного обновления. (И да, я понимаю, что это довольно плохой дизайн, во-первых. Я не проектировал его. Мне просто нужно его поддерживать и я не могу изменить схему базы данных.)

Было бы неплохо, если бы я мог выполнить обновление в SQL как хранимую процедуру. Но я не могу придумать, как реализовать рекурсивную операцию, требуемую в логике множеств, без использования курсора. Кто-нибудь знает достаточно простой способ осуществить это?

1 Ответ

0 голосов
/ 14 ноября 2009

Если вы используете Postgres или MS SQL 2005, вы можете использовать рекурсивное обновление, в противном случае вы можете рассмотреть возможность использования метода, отличного от списка смежности. Несколько недель назад я видел презентацию, рассказывающую об этих проблемах и хранящую иерархические данные. Вот ссылка:

http://www.slideshare.net/billkarwin/practical-object-oriented-models-in-sql

Старт @ слайд 40

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...