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)

错误:

The DELETE statement conflicted with the REFERENCE constraint "FK_BusinessPlusPostImage". The conflict Occurred in database "BusinessPlus_AdminPanel_Database", table "dbo.BusinessPlus_PostImage", column 'BusinessPlusPost_ID'. The statement was terminated.

Error: The DELETE statement conflicted with the REFERENCE constraint "FK_BusinessPlusPostImage". The conflict Occurred in database "BusinessPlus_AdminPanel_Database", table "dbo.BusinessPlus_PostImage", column 'BusinessPlusPost_ID'. The statement was terminated.

错误表示您有引用国外的数据,因此您无法删除。

删除BusinessPlus_AdminPanel_Database中的数据 table dbo.BusinessPlus_PostImage,第 BusinessPlusPost_ID 列,然后尝试 删除

现在,您只是声明要删除 BusinessPlus_Post 记录,而不是 BusinessPlus_PostImageBusinessPlus_PostTag 记录。这会导致问题,因为我们会有 'orphan' PostImage 和 PostTag 记录没有相应的 Post 记录。

显然,无法从 SQL 服务器中的多个表中删除(例如 在 MySQL 中受支持)。

您必须拆分查询,并首先从 'child' 个表中删除:

DELETE FROM BusinessPlus_PostImage
  WHERE BusinessPlusPost_ID = 3

DELETE FROM BusinessPlus_PostTag
  WHERE BusinessPlusPost_ID = 3

DELETE FROM BusinessPlus_Post
  WHERE Post_ID = 3