简体   繁体   English

SQL删除查询外键约束

[英]SQL Delete Query Foreign Key constraint

I am trying to Delete record with primary key as foreign key in two tables. 我试图在两个表中Delete主键为外键的记录。 Everytime I try to run the query it gives me this error: 每次我尝试运行查询时,都会出现此错误:

Query: 查询:

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)

Error: 错误:

The DELETE statement conflicted with the REFERENCE constraint "FK_BusinessPlusPostImage". DELETE语句与REFERENCE约束“ FK_BusinessPlusPostImage”冲突。 The conflict Occurred in database "BusinessPlus_AdminPanel_Database", table "dbo.BusinessPlus_PostImage", column 'BusinessPlusPost_ID'. 数据库“ BusinessPlus_AdminPanel_Database”的表“ dbo.BusinessPlus_PostImage”的“ BusinessPlusPost_ID”列中发生了冲突。 The statement was terminated. 该声明被终止。

Right now, you are only stating that you want to delete the BusinessPlus_Post record, but not the BusinessPlus_PostImage and BusinessPlus_PostTag records. 现在,您仅声明要删除BusinessPlus_Post记录,而不要删除BusinessPlus_PostImageBusinessPlus_PostTag记录。 This would lead to problems, as we then would have 'orphan' PostImage and PostTag records with no corresponding Post records. 这将导致问题,因为我们将拥有“孤立的” PostImage和PostTag记录,而没有相应的Post记录。

Apparently, it is not possible to delete from multiple tables in SQL Server (it is supported in MySQL, for example). 显然,这是不可能的从SQL服务器(它支持在MySQL,例如)多个表中删除。

You have to split your queries, and delete from the 'child' tables first: 您必须拆分查询,然后首先从“子”表中删除:

DELETE FROM BusinessPlus_PostImage
  WHERE BusinessPlusPost_ID = 3

DELETE FROM BusinessPlus_PostTag
  WHERE BusinessPlusPost_ID = 3

DELETE FROM BusinessPlus_Post
  WHERE Post_ID = 3

Error: The DELETE statement conflicted with the REFERENCE constraint "FK_BusinessPlusPostImage". 错误:DELETE语句与REFERENCE约束“ FK_BusinessPlusPostImage”冲突。 The conflict Occurred in database "BusinessPlus_AdminPanel_Database", table "dbo.BusinessPlus_PostImage", column 'BusinessPlusPost_ID'. 数据库“ BusinessPlus_AdminPanel_Database”的表“ dbo.BusinessPlus_PostImage”的“ BusinessPlusPost_ID”列中发生了冲突。 The statement was terminated. 该声明被终止。

Error denotes that you have data referencing the foreign ,hence you cannot delete. 错误表示您有引用外部的数据,因此无法删除。

Delete the datas in BusinessPlus_AdminPanel_Database table dbo.BusinessPlus_PostImage , column BusinessPlusPost_ID ,and then try delete 删除BusinessPlus_AdminPanel_Databasedbo.BusinessPlus_PostImageBusinessPlusPost_ID列中的数据,然后尝试删除

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

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