यदि आपको तालिकाओं को संशोधित करने की अनुमति नहीं है, तो आप EXISTS
. पर एक नज़र डाल सकते हैं ऑपरेटर।
यह आपको तालिका से पंक्तियों को हटाने की अनुमति तभी देगा जब EXISTS
के अंदर की क्वेरी कम से कम 1 परिणाम लौटाएं। आप इसका उपयोग निर्भरताओं की जांच के लिए कर सकते हैं।
आप 3 प्रश्न लिख सकते हैं:
DELETE C c
WHERE EXISTS (SELECT 1
FROM B b
WHERE c.b = b.b
AND EXISTS (SELECT 1
FROM A a
WHERE a.a = b.a
AND ... ));
DELETE B b
WHERE EXISTS (SELECT 1
FROM A a
WHERE a.a = b.a
AND ...);
DELETE A a
WHERE ...
पहला वाला C
. में रिकॉर्ड का ख्याल रखेगा जो B
. में रिकॉर्ड का संदर्भ देता है जो A
. में रिकॉर्ड का संदर्भ देता है जिसे आप हटाना चाहते हैं।
फिर आप B
. से रिकॉर्ड हटा सकते हैं चूंकि C
. में कोई और निर्भरता नहीं है .
आखिरकार, आप A
. से रिकॉर्ड हटा सकते हैं उसी तर्क का उपयोग करते हुए।