0

对不起标题,但我不知道如何命名它..

我正在使用 C# 并有一个 WinForms 应用程序我有 2 个表,每个表都有一个主键,这 2 个表是陌生人。这意味着我有第三张表连接它们。第三个表具有列:表的 A 主键和表的 B 主键。

我只想知道如果我从第三个表中删除一行,表A和B中的相关数据是否也会被删除?

4

4 回答 4

6

如果您使用该ON DELETE CASCADE选项创建了外键约束,那么是的,它将删除其他表中的相关行。

如果您在没有该选项的情况下创建了外键约束ON DELETE CASCADE,那么 DBMS 将完全阻止您删除原始行。

如果您没有创建外键约束,则只会删除原始行。

有关级联删除选项的示例用法,请参见此 SO 答案

于 2013-03-11T20:55:22.083 回答
1

不,您的第三个表不只是关联表,它存储表 A 和 B 的引用。

但它会以其他方式具有不同的功能,如果表 A 中的记录被删除并且它在关联表 C 中有任何引用。根据您的级联选项,表 C 中的记录也将被删除。如果没有提到级联选项,则会给出异常。

于 2013-03-11T20:54:56.717 回答
1

由于外键约束,Sql Server 不允许您从第三个表中删除该行。您必须先从表 A 和 B 中删除引用第三个表的值,然后再从第三个表中删除。

于 2013-03-11T20:55:52.167 回答
0

不,因为第三张表是表a和表b的关联表,如果删除的是第三张表,则不会删除表a和表b的记录。

于 2013-03-11T20:55:10.200 回答