因为我有这么多类别,所以我创建了一个“类别”数据库表:
"id_category , parent_id , category_name , category_tag"
示例:
----------------------------------------------------------
| id_category | parent_id | category_name | category_tag |
----------------------------------------------------------
| 1 | 0 | Cars | cars |
| 2 | 1 | Parts | parts |
| 3 | 2 | Accesories | accesories |
----------------------------------------------------------
树:
Cars
|_Parts
|_Accesories
当我想要删除树中的所有记录时,会出现问题。 如何从上面的示例中删除树分支中的所有记录。
在mySQL中用PHP可以吗?
答案 0 :(得分:2)
查找InnodB
,这是您的网站目前可能使用的MyISAM
类型的数据库引擎,同时查找Cascade Deletes
。
InnobDb允许您在表格中的指标之间分配关系,然后您可以指定删除或更新行时发生的操作。
您希望将ON DELETE
操作设置为CASCADE
,这会将删除操作级联到子行及其子行。因此,删除父母将自动删除所有孩子,大孩子等。
答案 1 :(得分:1)
http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
您正在寻找的是parent_id上的外键,该外键引用id_category,其约束为ON DELETE CASCADE。然后你可以删除根元素(category_id 0),最后你应该得到一个空表。
答案 2 :(得分:0)
数据库表本质上不是一棵树,你通常会做什么
DELETE FROM categories WHERE id_category=3
或
DELETE FROM categories WHERE id_category=3 AND parent_id=2
答案 3 :(得分:0)
如果您没有带约束的键,则只能通过表上的TRUNCATE命令删除所有内容。
如果您确实为级联删除配置了密钥,则删除顶部项(parent_id = 0)将删除所有依赖和子部分的行。在这种情况下,删除第一行将清空表。