यदि आपके स्कीमा पर नियंत्रण है, तो मैं स्कीमा cascading deletes का उपयोग कर दूंगा।
लेख से (और अधिक उचित हिस्से पर आपके उदाहरण के लिए अनुवाद)
CREATE TABLE point
(
pt_id integer PRIMARY KEY,
evt_id integer REFERENCES event ON DELETE CASCADE
)
आप की स्थापना की cascades है, तो आप सिर्फ मुख्य समारोह तालिका से हटा सकते हैं और अन्य सभी तालिकाओं साफ हो जाएगा स्वचालित रूप से
अन्यथा, आपको पहले सभी संदर्भों को हटाने की आवश्यकता है, फिर आप मुख्य तालिका हटा दें। आप एक लेन-देन में करना चाहिए डेटा संगत रखने के लिए
BEGIN;
DELETE FROM trace WHERE EXISTS
(SELECT 1 FROM point WHERE evt_id = 1139 AND trace.pt_id = point.pt_id);
DELETE FROM point where evt_id = 1139;
DELETE FROM magnitude where evt_id = 1139;
DELETE FROM event where evt_id = 1139;
COMMIT;
स्रोत
2012-04-13 17:11:11
जहाँ तक मुझे पता है, आप इस तरह की कई तालिकाओं से हटा नहीं सकते हैं (लेकिन मैं गलत हो सकता हूं)। हालांकि, कम से कम 'trace' में evt_id कॉलम नहीं है –
डेटाबेस सर्वर पर है। मैं इस क्वेरी फ़ाइल को कैसे चला सकता हूं? – user1202766
हां, सच्चे निशान में evt_id कॉलम नहीं है लेकिन pt_id है जो बिंदु तालिका से है जिसमें evt_id कॉलम है..यह भ्रमित है! – user1202766