C# 如何删除类别和子类别?

C# 如何删除类别和子类别?,c#,asp.net,sql-server,database,C#,Asp.net,Sql Server,Database,我不太清楚,当我们删除类别时,是否有必要删除与之相关的子类别?如果有,请通过编写Sql查询来帮助我们?同样,如果删除子类别,那么删除类别也应该删除 +-------+------------+ | CatID | CatName | +-------+------------+ | 1 | Seeds | | 2 | Pesticides | | 3 | Fertilizer | +-------+------------+ +----------+--

我不太清楚,当我们删除类别时,是否有必要删除与之相关的子类别?如果有,请通过编写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 |
+----------+---------------+-----------+

如果在此关系上定义了
外键
,则必须删除(因为child不能是孤立项)或设置null(如果CatId列允许
null
值)在
子类别
表的
CatID
列上,因为关系数据库使用
引用完整性
。您可以定义
CASCADE
选项来自动执行此操作

ALTER TABLE SubCategory
ADD CONSTRAINT FK_SubCategory_Category
    FOREIGN KEY (CatId)
    REFERENCES Category (CatId)
    ON DELETE CASCADE
查看更多详细信息

若您有一个FK,并且希望对正在删除的内容有更多的控制,那个么必须提供两条sql语句来实现它,例如

delete from subcategory where catId = 1
delete from category where catId = 1

如果在此关系上定义了
外键
,则必须删除(因为child不能是孤立项)或设置null(如果CatId列允许
null
值)在
子类别
表的
CatID
列上,因为关系数据库使用
引用完整性
。您可以定义
CASCADE
选项来自动执行此操作

ALTER TABLE SubCategory
ADD CONSTRAINT FK_SubCategory_Category
    FOREIGN KEY (CatId)
    REFERENCES Category (CatId)
    ON DELETE CASCADE
查看更多详细信息

若您有一个FK,并且希望对正在删除的内容有更多的控制,那个么必须提供两条sql语句来实现它,例如

delete from subcategory where catId = 1
delete from category where catId = 1

您需要通过更改当前架构来删除级联:

ALTER TABLE SubCategory
    ADD CONSTRAINT fk_SubCat_CatID FOREIGN KEY (CatID) REFERENCES category(CatID )
    ON DELETE CASCADE;

这样,当您从
category
表中删除类别时,参考数据将自动删除。只需确保在使用删除级联上的
创建新约束之前删除当前约束

您需要通过更改当前架构来删除级联上的

ALTER TABLE SubCategory
    ADD CONSTRAINT fk_SubCat_CatID FOREIGN KEY (CatID) REFERENCES category(CatID )
    ON DELETE CASCADE;

这样,当您从
category
表中删除类别时,参考数据将自动删除。只需确保在使用“删除级联”上的
创建新约束之前删除当前约束

您已经尝试了什么?你认为可能的答案是什么?您是否研究过“外键关系”和“删除记录”?是否可能重复?是否确实要在删除子类别时删除类别(并保留孤立的子类别)?也许你的意思是当类别的最后一个子类别被删除时?即使这样,我也不知道我是否会自动完成。您对级联有一些建议,但我一般都会这样做。对于这样简单的关系,很容易将此逻辑封装在一个易于调试的存储过程中,以处理类别和/或子类别的删除。@Thomas MySQL和SQL Server不一样。@Thomas没有使其成为一个好的副本。答案有此OP无法使用的语法。您已经尝试了什么?你认为可能的答案是什么?您是否研究过“外键关系”和“删除记录”?是否可能重复?是否确实要在删除子类别时删除类别(并保留孤立的子类别)?也许你的意思是当类别的最后一个子类别被删除时?即使这样,我也不知道我是否会自动完成。您对级联有一些建议,但我一般都会这样做。对于这样简单的关系,很容易将此逻辑封装在一个易于调试的存储过程中,以处理类别和/或子类别的删除。@Thomas MySQL和SQL Server不一样。@Thomas没有使其成为一个好的副本。答案包含此OP无法使用的语法。