मैं तीसरी टेबल आईडी के आधार पर दो निर्भर तालिकाओं में सभी पंक्तियों को हटाने का प्रयास कर रहा हूं।[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 का उपयोग करता है? - (इस प्रकार, यह विदेशी कुंजी असफल हो जाएगी)
या इस तालिका में अन्य टी.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)
मेरे लिए यह विपरीत जैसा लगता है - लेनदेन खरीद पर निर्भर है (जैसा कि मैं क्लाइंट_आईडी w/o द्वारा हटा नहीं सकता) –
@ डेरेक एडैयर: चूंकि @ अल्बर्टएन सही सवाल का जवाब देने वाले पहले व्यक्ति थे, और मेरी पोस्ट को एक बड़ा ओवरहाल चाहिए इससे पहले कि यह उपयोगी था, कृपया उसका जवाब स्वीकार करने पर विचार करें। – Tomalak
कोई ध्यान से देखो, आपके पास अपनी खरीद तालिका के अंदर एक Transaction_ID है। यदि आपने पहले लेनदेन को हटा दिया है, तो खरीद तालिका अस्थायी रूप से एक अमान्य लेनदेन_आईडी होगी जो मौजूद नहीं थी। – MindStalker