2015-04-05 45 views
0

這裏缺少的是有問題我'這樣的問題:什麼我從這個DELETE語句

DELETE語句刪除該行中當您執行這一點,有44444的ID的分類表聲明,它會產生一個錯誤,因爲該類別在Products表中有相關​​的行。若要解決該問題,請在DELETE語句前加上另一個DELETE語句,該語句刪除此類別中的所有產品。

我不知道爲什麼,我不斷收到此錯誤信息:

DELETE語句衝突與基準約束 「FK__Products__Catego__145C0A3F」。衝突發生在數據庫 「MyGuitarShop」,表「dbo.Products」,列'CategoryID'中。

這裏是我的SQL語句:

DELETE Categories 
FROM Categories JOIN Products 
    ON Categories.CategoryID = Products.CategoryID 
WHERE Categories.CategoryID = 44444; 

我一直在這一段時間,現在,我想不出什麼即時通訊做錯了,任何幫助,將不勝感激。

+0

我發現的是,你不只是使用'JOIN',而是執行下列操作之一: 'INNER JOIN','左JOIN','RIGHT JOIN','FULL JOIN' – CoderMusgrove 2015-04-05 21:27:47

回答

0

您必須先刪除產品,然後才能刪除該類別。由於外鍵約束,您有錯誤。 所以我會寫2個查詢:

DELETE FROM Products WHERE CategoryID = 44444; 

現在,因爲沒有產品具有此ID的類別可以將其刪除:

DELETE FROM Categories WHERE CategoryID = 44444; 
+0

謝謝這是我發現解決這個問題的唯一方法。 – 2015-04-06 03:30:14

0

我知道Postgres的,至少你可以使用級聯修改器刪除相關的行。

DELETE FROM Categories WHERE CategoryID = 44444 CASCADE;