删除行SQL从表

问题描述:

很抱歉的冠军,但我不知道如何命名呢..删除行SQL从表

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

我只想知道,如果我从第三张表删除一行,是相关的 来自表A和B的数据也将被删除?

+1

取决于表和删除触发器之间是否存在强制关系。 – 2013-03-11 20:55:00

+0

表A与第三个表以及表B有关系。 – Elior 2013-03-11 20:57:04

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

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

如果您未创建外键约束,那么只有原始行将被删除。

查看this SO answer例如使用级联删除选项。

+0

ON DELETE CASCADE是什么意思? – Elior 2013-03-11 21:05:33

+0

@Elior我想我解释得很清楚。如果您需要更深入的解释,也许您应该尝试使用Google搜索。 – ean5533 2013-03-11 21:06:56

不,它不会你的第三个表只是副表存储和表A的引用B.

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

+0

所以如果我从表a删除一行,它将从表c中删除引用行,然后从表b中删除引用行?或者只是表格a和c的行? – Elior 2013-03-11 21:02:35

+0

@Elior,只能从表格a和c中选择。 – Sunny 2013-03-11 21:09:33

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

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