我有一个调用sql脚本的Web应用程序,该脚本试图从table_1中删除一行。但是,table_2使用FK约束引用它,因此这给出了错误。我手动删除了table_2的引用行。 (我通过查询证实它已经消失了。)然后我运行了应用程序,我仍然得到同样的错误! (The DELETE statement conflicted with the REFERENCE constraint "table_2_fk". The conflict occurred in database "my_db", table "table_2", column 'table_1_pk'.
为什么?
表格信息
table_2包含列pk,name和table_1_pk。它有一个FK约束table_2_fk,可确保table_1_fk = table_1.pk
table_1有pk,一堆其他列,没有FK约束。
删除和查询的详细信息
假设table_1.pk = 1.我运行了语句
delete from table_2 where table_1_pk = 1
然后我查询了db:
select * from table_2 where table_1_pk = 1
返回0结果。
答案 0 :(得分:0)
您应该更改代码,以便首先从表2中删除,然后从表1中删除。或者可选地将Cascade删除添加到外键约束(在表1中删除时自动从表2中删除)< / p>
ADD CONSTRAINT [FK_Table2_table1] FOREIGN KEY([table_1_pk])
REFERENCES [dbo].[table1] ([table_1_fk ])
ON DELETE CASCADE