簡體   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