我想删除父类别时自动从数据库中删除所有子类别

时间:2016-12-30 06:19:34

标签: php mysql

当从数据库中删除父类别(例如,架构,艺术和文化)时,我希望从数据库中删除父类别下的所有子类别。我不知道如何为此编写查询。

我使用的是PHP和MySQL数据库,类别和子类别是两个独立的表格,表格的快照如下所示。

类别表

enter image description here

子类别表

enter image description here

5 个答案:

答案 0 :(得分:6)

使用ON DELETE CASCADE

添加外键
ALTER TABLE subcategory ADD FOREIGN KEY fk_parent(parent_id)
REFERENCES category(cat_id) ON DELETE CASCADE

删除父级时会自动删除子类别。有关更多信息,请参阅https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

答案 1 :(得分:0)

你必须在这里使用外键。因此,如果删除父ID,则子项将自动删除

ALTER TABLE subcategory ADD FOREIGN KEY fk_parent(parent_id)
REFERENCES category(cat_id) ON DELETE CASCADE

答案 2 :(得分:0)

诀窍不在查询中;你的sql应该是正常的DELETE查询。

您需要做的是将FOREIGN KEY配置为ON DELETE CASCADE

参见本教程: http://www.mysqltutorial.org/mysql-on-delete-cascade/

答案 3 :(得分:0)

$id = 1;
DELETE FROM category WHERE cat_id = $id;
DELETE FROM subcategory WHERE parent_id = $id;

如果添加DELETE CASCADE

$id = 1;
DELETE FROM category WHERE cat_id = $id;

答案 4 :(得分:0)

您必须在category and subcategory之间设置关系。我的意思是category有很多subcategories。所以它应该是one-to-many关系。当你设置这种关系时,你必须使用onDelete cascade。因此,一旦类别将被删除,则子类别将自动删除。