Php 内部表级联删除

Php 内部表级联删除,php,mysql,sql,Php,Mysql,Sql,我有下表: id name parent_id 1 node1 0 2 node2 1 3 node3 1 4 node4 2 5 node5 2 6 node6 5 . . . . . . . . . 它可以显示如下内容: node1--->node2--->node4 |

我有下表:

id     name     parent_id
1      node1    0
2      node2    1
3      node3    1
4      node4    2
5      node5    2
6      node6    5
.      .        .
.      .        .
.      .        .
它可以显示如下内容:

node1--->node2--->node4
     |        |
     |        --->node5--->node6
     |
     --->node3

我希望当父对象被删除时,其所有子对象也将被删除。我该怎么做?

使用数据库功能“”,您可以轻松做到这一点。 无论何时定义外键,我们都可以选择启用删除级联,以便在删除父行时自动删除引用的行

比如

create table Nodes(id int not null primary key AUTO_INCREMENT,
               name varchar(20),
               parent_id int null,
               constraint FK_ID_With_CascadeDelete
               foreign key (parent_id)
               REFERENCES Nodes(id)
               ON DELETE CASCADE);
参考以下链接获取示例,显示删除节点2即删除所有子节点


注意:由于“级联时删除”功能需要定义外键,因此对于没有父节点的节点,在父节点id中需要使用“null”而不是0。

您可以显示您已经尝试过的内容吗?目前我使用了一个用于父层次结构的附加列。比如:0>1>2>5,我用它来查找父对象的子对象。这不是一个好主意,尤其是当我更改一个孩子的家长时,该孩子的所有孩子的层次结构列都必须更改。我是说代码,你编写了什么代码来解决这个问题?不幸的是,我找不到解决这个问题的代码。你看过以下内容了吗[非常感谢你的帮助]。