【问题标题】:Fixing broken integrity hierarchy trees using SQL使用 SQL 修复损坏的完整性层次树
【发布时间】:2012-09-17 11:00:16
【问题描述】:

对于顶级组的 parentid 为 -1 的组,我有一个基本的父子表(parentid int,childid int)。我想确保组织结构中的更改不会破坏链条,如果确实如此,请修复它。这意味着如果有一个顶级 parentid 不是 -1 的子父记录,那么我们需要修复它并将其 parentid 更改为 -1。

例如:

插入tbl_x parentid, childid (-1,1), (-1,2), (2,3), (2,4), (2,5), (6,7), (7, 8)

将导致第 1-5 组都以 -1 结尾,但第 7 组需要修复,因为它以 6 结尾 - 因此链接以某种方式断开,需要从(6,7) 到 (-1,7) 将第 7 组带到顶部。

【问题讨论】:

  • 新条目 (-1, 6) 会解决您的问题吗?或者是否必须将 (6 ,7) 更新为 (-1, 7)?

标签: sql parent-child common-table-expression data-integrity


【解决方案1】:

所以您需要为那些本身不是childids 的parentids 创建一组行?

INSERT INTO tbl_x (parentid, childid)
SELECT -1, parentid as childid
FROM tbl_x
WHERE parentid NOT IN (SELECT childid FROM tbl_x)

我认为应该这样做。

【讨论】:

  • 感谢您提供这个优雅的解决方案,我的做法完全错了。
猜你喜欢
  • 2011-04-07
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
相关资源
最近更新 更多