[英]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.