删除外键数据应显示主键错误

时间:2012-04-25 09:21:08

标签: sql-server

我有两个表Table1和Table2。其中table1列主键被引用为table2列为外键。

现在,当我从table2中删除具有table1外键列的记录时,我必须显示约束违规的错误消息。

2 个答案:

答案 0 :(得分:2)

如果我说得对,表1中的A列(比如说)参考表2中的B列(比如说)。 您可以做的是将ON DELETE设置为NO ACTION,如果表1中的任何子项仍然存在,将阻止从表2中删除记录。

您可以通过以下方式执行此操作:

ALTER TABLE TABLE1 ADD FOREIGN KEY (A) REFERENCES TABLE2 (B) ON DELETE NO ACTION;

答案 1 :(得分:0)

如果从子表而不是父表中删除记录,则没有约束违规。删除子记录是正常的。例如,如果我有一个用户表和一张包含users表中userid的照片表,为什么我要停止该操作并在我想要删除照片时抛出错误?删除子记录也不会删除父记录。

如果你真的想这样做,那么你必须通过触发器(确保处理多个记录删除)或者如果FK是必填字段,那么只是不授予删除表的权限。请注意,这可能意味着即使您尝试删除也无法删除任何记录。一种简单的方法可能是在应用程序中没有可用的删除功能。

我怀疑你真正需要什么才能更好地定义需求文档中所需的内容。在处理数百个数据库的30多年中,我从未见过有人需要这个功能。