加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP MySQL删除父行和子行

发布时间:2020-12-13 17:23:45 所属栏目:PHP教程 来源:网络整理
导读:我有1个 MySQL表.它看起来像这样: +---------+-------------+--------+| item_id | parent_id | Name |+---------+-------------+--------+| 1 | 0 | Home |+---------+-------------+--------+| 2 | 1 | Sub |+---------+-------------+--------+| 3 | 2 |
我有1个 MySQL表.它看起来像这样:

+---------+-------------+--------+
| item_id |  parent_id  |  Name  |
+---------+-------------+--------+
|   1     |     0       |  Home  |
+---------+-------------+--------+
|   2     |     1       |  Sub   |
+---------+-------------+--------+
|   3     |     2       | SubSub |
+---------+-------------+--------+

如果我删除item_id 1,我想删除子的其余部分,但我该怎么办呢?

我已经尝试过外键但只有你有2个表才有效吗?

我希望有人可以帮助我在MySQL中使用PHP吗?

解决方法

绝对可以使用MySQL自引用外键(您不需要多个表).但是,对于任何类型的外键支持,您需要使用 InnoDB engine.我的猜测是,您使用的是 MyISAM engine.

使用InnoDB,您可以创建一个类似于您已经拥有的表,包括自引用外键,如下所示:

CREATE TABLE  `yourTable` (
  `item_id` int(10) unsigned NOT NULL auto_increment,`parent_id` int(10) unsigned default NULL,`Name` varchar(50) NOT NULL,PRIMARY KEY  (`item_id`),KEY `FK_parent_id` (`parent_id`),CONSTRAINT `FK_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `yourTable` (`item_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后,当您发出DELETE语句时,如:

DELETE FROM `yourTable` WHERE `item_id` = 1;

…它会删除每个’child’行,其parent_id也为1.如果这些’子’行中的任何一行都有自己的子项,它们也会被删除,等等(这就是ON DELETE CASCADE的含义).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读