当从数据库中删除父类别(例如,架构,艺术和文化)时,我希望从数据库中删除父类别下的所有子类别。我不知道如何为此编写查询。
我使用的是PHP和MySQL数据库,类别和子类别是两个独立的表格,表格的快照如下所示。
类别表
子类别表
答案 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
。因此,一旦类别将被删除,则子类别将自动删除。