我正在尝试Delete
使用主键作为外键在两个表中进行记录。每当我尝试运行查询时,它都会给我这个错误:
查询:
DELETE FROM BusinessPlus_Post
FROM BusinessPlus_Post
INNER JOIN BusinessPlus_PostImage ON BusinessPlus_Post.Post_ID = BusinessPlus_PostImage.BusinessPlusPost_ID
INNER JOIN BusinessPlus_PostTag ON BusinessPlus_Post.Post_ID = BusinessPlus_PostTag.BusinessPlusPost_ID
WHERE
(BusinessPlus_Post.Post_ID = 3)
AND (BusinessPlus_PostImage.BusinessPlusPost_ID = 3)
AND (BusinessPlus_PostTag.BusinessPlusPost_ID = 3)
错误:
DELETE语句与REFERENCE约束冲突 “FK_BusinessPlusPostImage”。数据库中发生冲突 “BusinessPlus_AdminPanel_Database”,表格 “dbo.BusinessPlus_PostImage”,列'BusinessPlusPost_ID'。该 声明已经终止。
答案 0 :(得分:1)
目前,您只是声明要删除BusinessPlus_Post
记录,而不是BusinessPlus_PostImage
和BusinessPlus_PostTag
记录。这会导致问题,因为我们会有“孤儿”这样的问题。 PostImage和PostTag记录没有相应的帖子记录。
显然,无法从SQL Server中的多个表中删除(例如,MySQL中 支持)。
您必须拆分查询,然后从“孩子”中删除'表格首先:
DELETE FROM BusinessPlus_PostImage
WHERE BusinessPlusPost_ID = 3
DELETE FROM BusinessPlus_PostTag
WHERE BusinessPlusPost_ID = 3
DELETE FROM BusinessPlus_Post
WHERE Post_ID = 3
答案 1 :(得分:0)
错误:DELETE语句与REFERENCE约束冲突 " FK_BusinessPlusPostImage&#34 ;.数据库中发生冲突 " BusinessPlus_AdminPanel_Database",表 " dbo.BusinessPlus_PostImage",列' BusinessPlusPost_ID'。该 声明已经终止。
错误表示您有引用外来数据的数据,因此您无法删除。
删除BusinessPlus_AdminPanel_Database
表中的数据
dbo.BusinessPlus_PostImage
,列BusinessPlusPost_ID
,然后尝试删除