繁体   English   中英

SQL删除查询外键约束

[英]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_PostImageBusinessPlus_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_Databasedbo.BusinessPlus_PostImageBusinessPlusPost_ID列中的数据,然后尝试删除

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM