Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

सभी आश्रित पंक्तियों को कैसे हटाएं

यदि आपको तालिकाओं को संशोधित करने की अनुमति नहीं है, तो आप 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 . से रिकॉर्ड हटा सकते हैं उसी तर्क का उपयोग करते हुए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डिफ़ॉल्ट पोर्ट निर्दिष्ट करते समय उपयोगकर्ता के लिए लॉगिन विफल रहा

  2. SQL सर्वर (T-SQL) में सभी भाषाओं की सूची कैसे प्राप्त करें

  3. एसएसआईएस:निर्दिष्ट राज्य में उपयोग के लिए मान्य नहीं होने वाली कुंजी प्राप्त करना शुरू कर दिया। मेरे अनुसूचित एसएसआईएस पैकेज पर त्रुटि

  4. SQL सर्वर में फ़ाइलें संग्रहीत करना

  5. मैं स्थापित SQL सर्वर इंस्टेंस और उनके संस्करण कैसे निर्धारित कर सकता हूं?