我試圖根據第三個表ID刪除兩個從屬表中的所有行。[MySQL]:從兩個從屬表中刪除行
表結構:
Transaction
-Transaction_ID (primary)
-Timestamp
Purchase
-Item_ID
-Transaction_ID
-Purchase_ID (primary)
Item
-Item_ID (primary)
-Client_ID
我想刪除交易/購買項目匹配CLIENT_ID的所有行。聽起來很簡單......雖然我可以總結我的腦海新手圍繞...
DELETE dbName.t FROM
dbName.Transaction t
JOIN
dbName.Purchase p
ON
p.Transaction_ID = t.Transaction_ID
JOIN
dbName.Item i
ON
p.Item_ID = i.Item_ID
WHERE
Client_ID = 1
都能跟得上......
我得到這個錯誤foreign key constraint fails...
- 我敢肯定,你們中許多人並不感到驚訝。
購買使用t.Transaction_ID是否存在問題? - (因此,這個外鍵會失敗)
或者有可能在這個表中有其他t.Transaction_ID相關的數據(我還沒有找到任何)。
編輯:COMPLETE ERROR
Cannot delete or update a parent row: a foreign key constraint fails
(`ItemTracker_dbo/Purchase`, CONSTRAINT `FK_Purchase_Transaction`
FOREIGN KEY (`Transaction_ID`) REFERENCES `Transaction` (`Transaction_ID`)
ON DELETE NO ACTION ON UPDATE CASCADE)
對我來說,它似乎是相反的 - 交易是依賴於購買(因爲我不能刪除client_id W/O它) – 2010-01-06 16:23:39
@Derek Adair:由於@AlbertEin是第一個正確回答這個問題,我的職位需要一個大的改革在它有用之前,請考慮接受他的答案。 – Tomalak 2010-01-06 17:12:27
仔細看,您的購買表中有一個Transaction_ID。如果您先刪除了事務,那麼Purchase表將臨時包含一個不存在的無效Transaction_ID。 – MindStalker 2010-01-06 17:38:26