mysql父行指那一行,PHP MySQL删除父行和子行

我有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的含义).

标签:mysql,sql-delete,parent,children

来源: https://codeday.me/bug/20190620/1244687.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值