ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

PHP MySQL删除父行和子行

2019-06-20 14:03:34  阅读:254  来源: 互联网

标签:mysql sql-delete parent children


我有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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有