该SQL语句如何抛出以下异常?

时间:2016-11-08 10:13:54

标签: sql exception foreign-keys

这句话怎么样:

The DELETE statement conflicted with the FOREIGN KEY constraint "FK_statobj_begpasid". The conflict occurred in database "db.mdf", table "dbo.stationobjects", column 'beginpassageid'.

抛出此异常?

allow-intent

我不知道,但事情发生了。 beginPassageId是passageid上的外键。

编辑: 考虑一下NOT IN。我想删除其中一个相关表格中不存在的所有段落。它通常有效,但它发生过一次。

谢谢。

3 个答案:

答案 0 :(得分:0)

这意味着通道是父表。和stationobjects是子表。您正试图从stationobjects表中存在的通道表中删除passid。

首先尝试从stationobjects中删除那些passid然后你可以运行这个删除语句。

如果您的数据库支持,则替代方法是级联删除。

答案 1 :(得分:0)

当您在两个表中具有外键关系时会发生这种情况。 这违反了Refrential Integrity。

所以如果你从主表中删除记录并且记录存在于外键表中, 那你有两个选择:
1.将删除规则设置为级联,以便在删除主记录时,外键表记录将自动删除 2.首先从外键表中删除记录,然后从主键表中删除记录。

答案 2 :(得分:-1)

当表A外键是表B主键并且当您尝试删除表A中具有链接的表A中的记录时,会出现这种错误,则不会发生删除。在删除之前尝试删除外键关系。同样,通过删除fk关系并在表重置后再次重建它们,在表中使用truncate