【问题标题】:SQL Tree Delete by Parent ID按父 ID 删除 SQL 树
【发布时间】:2014-04-02 07:59:54
【问题描述】:

所以我有一个看起来像这样的数据库(树):

因此,当我删除一个问题时,我想删除与该问题相关的整个树,但我不知道该怎么做 :(。你有什么想法吗?

我有这个查询,但它只删除了问题和与该问题相关的问题,但它停在那里。

DELETE FROM support_faq WHERE id=".$id_intrebare." OR parinte=".$id_intrebare

【问题讨论】:

  • 是否有“on delete cascade”应用于表?
  • 您使用的是哪个 DBMS?甲骨文?后格雷斯?听起来你需要一个递归查询。
  • MySQL。那么我该怎么做呢? :(
  • MySQL 不支持递归查询。您将需要编写一个存储过程

标签: mysql sql


【解决方案1】:

使用 ON DELETE CASCADE 选项添加 FOREIGN 键

例如

ALTER TABLE ChildTable ADD FOREIGN KEY (columnName_c) REFERENCES ParentTable(columnName_p) ON DELETE CASCADE;

【讨论】:

  • 那么首先,您说我必须从我的表中创建 2 个表?我有 ID、TYPE、PARINTE(PARRENT) 和 TEXT。
  • @user3175636 你只有一张桌子?如果是,则使用子查询来实现您的结果。
  • 我无法使用子查询,因为我不知道我已将哪些问题链接到已删除的问题。
  • 执行此操作后,我的查询(DELETE、INSERT)不起作用。知道为什么吗?
【解决方案2】:

如果您只有一张表具有松散耦合的父子关系。您可以编写一个过程以递归方式删除您的记录。

  1. 请点击链接了解如何在mysql中编写程序
  2. 它还会让您知道如何使用循环

LINK

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 2014-12-10
    • 2017-04-25
    • 2020-01-24
    • 2019-03-19
    相关资源
    最近更新 更多