代码之家  ›  专栏  ›  技术社区  ›  Mason Wheeler

有没有办法递归地更新SQL中的树?

  •  0
  • Mason Wheeler  · 技术社区  · 15 年前

    我有一个表示一堆树的数据库表。前三列是类似这样的guid:

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

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

    如果我可以在SQL中作为存储过程进行更新,那就太好了。但是,如果不使用光标,我想不出如何实现集合逻辑中所需的递归操作。有人知道一个相当简单的方法来实现这一点吗?

    1 回复  |  直到 12 年前
        1
  •  0
  •   Brandon G    15 年前

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

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

    开始@幻灯片40