有什么方法可以在 SQL 中递归更新树吗?

发布于 2024-08-11 03:24:06 字数 349 浏览 6 评论 0原文

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

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

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

如果我能做到这一点那就太好了在 SQL 中更新,作为存储过程。但我想不出如何在不使用游标的情况下实现集合逻辑中所需的递归操作。有谁知道一个相当简单的方法来实现这一目标?

I've got a database table that represents a bunch of trees. The first three columns are GUIDs that look like this:

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

It's possible to move a node to a different tree. The tricky part is bringing all its child-nodes with it. That takes a recursive update. (And yes, I realize this is kinda bad design in the first place. I didn't design it. I just have to maintain it, and I can't change the database schema.)

It would be nice if I could do the update in SQL, as a stored procedure. But I can't think of how to implement the recursive operation required in set logic, without employing a cursor. Does anyone know of a reasonably simple way to pull this off?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

若相惜即相离 2024-08-18 03:24:06

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

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

从幻灯片 40 开始

If you are using Postgres or MS SQL 2005 you can use a recursive update, otherwise, you may want to consider using a method other than an adjacency list. I saw a presentation a few weeks ago speaking about these issues and storing hierarchical data. Here is a link:

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

Start @ slide 40

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文