如何删除类别和子类别?

时间:2018-10-31 11:50:46

标签: c# asp.net sql-server database

我有点困惑,当我们删除类别时是否有必要删除与之相关的子类别(如果有的话),请通过编写Sql查询来提供帮助?类似地,如果删除子类别,那么删除类别也将也应删除?

+-------+------------+
| CatID |  CatName   |
+-------+------------+
|     1 | Seeds      |
|     2 | Pesticides |
|     3 | Fertilizer |
+-------+------------+

+----------+---------------+-----------+
| SubCatID |  SubCatName   |    CatID  |
+----------+---------------+-----------+
|        1 | Red Seed      |         1 |
|        2 | Red Seed      |         1 |
|        3 | Red Seed      |         1 |
|        4 | Red Seed      |         1 |
|        5 | National Worm |         2 |
+----------+---------------+-----------+

2 个答案:

答案 0 :(得分:1)

鉴于您为此关系定义了Foreign Key,然后是的,您必须在{上删除(因为孩子不能成为孤儿)或将其设置为null(如果您的CatId列允许null值) CatID表上的{1}}列,因为关系数据库使用Subcategories。您可以定义referential integrity选项来自动为您完成此操作。

CASCADE

检查this article了解更多详细信息。

如果您有FK,并且希望更多地控制要删除的内容,则必须提供两个sql语句来制作它,作为示例。

ALTER TABLE SubCategory
ADD CONSTRAINT FK_SubCategory_Category
    FOREIGN KEY (CatId)
    REFERENCES Category (CatId)
    ON DELETE CASCADE

答案 1 :(得分:1)

您需要通过更改当前架构来$skuList = explode('/[\r\n]+/', $_POST['skuList']);

ON DELETE CASCADE

通过此操作,当您从ALTER TABLE SubCategory ADD CONSTRAINT fk_SubCat_CatID FOREIGN KEY (CatID) REFERENCES category(CatID ) ON DELETE CASCADE; 表中删除类别时,参考数据将自动删除。只需确保先删除当前约束,然后再使用category创建新约束即可。