在SQL中以递归方式更新树的任何方法?

时间:2009-11-13 23:22:15

标签: sql recursion tree sql-update

我有一个表示一堆树的数据库表。前三列是GUID,如下所示:

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

可以将节点移动到其他树。棘手的部分是带上它的所有子节点。这需要递归更新。 (是的,我首先意识到这是一个糟糕的设计。我没有设计它。我只需要维护它,我不能改变数据库模式。)

如果我可以在SQL中进行更新作为存储过程,那将是很好的。但我想不出如何在不使用游标的情况下实现设置逻辑中所需的递归操作。有谁知道一个相当简单的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果您使用的是Postgres或MS SQL 2005,则可以使用递归更新,否则,您可能需要考虑使用邻接列表以外的方法。几周前我看到了一个关于这些问题和存储分层数据的演讲。这是一个链接:

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

开始@ slide 40