[英]SQL Delete Query Foreign Key constraint
我试图在两个表中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”列中发生了冲突。 该声明被终止。
现在,您仅声明要删除BusinessPlus_Post
记录,而不要删除BusinessPlus_PostImage
和BusinessPlus_PostTag
记录。 这将导致问题,因为我们将拥有“孤立的” PostImage和PostTag记录,而没有相应的Post记录。
显然,这是不可能的从SQL服务器(它支持在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
错误:DELETE语句与REFERENCE约束“ FK_BusinessPlusPostImage”冲突。 数据库“ BusinessPlus_AdminPanel_Database”的表“ dbo.BusinessPlus_PostImage”的“ BusinessPlusPost_ID”列中发生了冲突。 该声明被终止。
错误表示您有引用外部的数据,因此无法删除。
删除BusinessPlus_AdminPanel_Database
表dbo.BusinessPlus_PostImage
, BusinessPlusPost_ID
列中的数据,然后尝试删除
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.