मैं इस कंप्यूटर पर एसक्यूएल की जरूरत नहीं है तो मैं आप सटीक कोड नहीं दे सकता लेकिन यहां जिस तरह से आप चाहिए चले जाओ। कृपया ध्यान दें कि मैं SQL सर्वर शब्दावली का उपयोग करूंगा।
मुझे कम से कम SQL सर्वर में गतिशील एसक्यूएल के बिना ऐसा करने का कोई तरीका नहीं दिखता है।
- कॉलम
FK_TBL_NM
, FK_CLMN_VAL
साथ अस्थायी तालिका #t बनाएँ।
यह TableA के पी के लिए सभी FK संबंधों प्राप्त करने के लिए मुश्किल नहीं होना चाहिए:
SELECT * FROM sys.foreign_keys
WHERE referenced_object_id = OBJECT_ID('TableA')
उत्पन्न इस क्वेरी की और प्रत्येक के लिए परिणाम के माध्यम से पुनरावृति और गतिशील एसक्यूएल कि में शामिल हो जाएगा निष्पादित करने के लिए एक कर्सर का प्रयोग करें TableA
और कर्सर से पुनर्प्राप्त तालिका और FK_TBL_NM
(टेबलबी, टेबलसी, ...) और एफके कॉलम का मान देता है।
#t में परिणाम डालें
अब (यह तालिका में गतिशील एसक्यूएल परिणाम प्राप्त लेकिन stackoverflow पर एक अनुसंधान करने के लिए मुश्किल है) आप तालिका TableB
में हर पंक्ति में एक पंक्ति है , TableC
, ...
मुझे पता है कि यह संभव है क्योंकि मैंने कुछ दिनों पहले काम पर अपने वर्तमान प्रोजेक्ट के लिए समान तर्क के साथ कोड लिखा था।
ध्यान दें कि आपको शायद एक कोड के साथ पीके/एफके के साथ अपना कोड काम करना चाहिए। कॉलम के लिए अलग-अलग डेटा प्रकार भी हैं। यह चीजों को थोड़ा सा जटिल करता है लेकिन यह संभव है।
ऊपर सूचीबद्ध प्रत्येक चरण को लागू करना मुश्किल नहीं है। हालांकि, अगर आपको कोई कठिनाई है, तो स्टैक ओवरफ्लो पर खोजें :)
स्रोत
2011-09-30 21:43:20
अपने लक्ष्य पूरी तरह से स्पष्ट नहीं है। क्या आप टेबल के बीच विदेशी कुंजी प्राप्ति जहाजों की पहचान करने के लिए मेटाडेटा खोजना चाहते हैं, या क्या आप टीएसक्यूएल प्रश्नों को डेटा ढूंढने के लिए चाहते हैं जो आपको पहले से ही विदेशी कुंजी संबंधों को जानते हैं? – user957902
मुझे मेटाडाटा में कोई दिलचस्पी नहीं है। मेरे उदाहरण में मैं दिखाता हूं कि तालिकाओं और विशिष्ट पंक्तियों को निर्धारित करने में मुझे दिलचस्पी है, जिनकी निर्भरता किसी अन्य विशिष्ट पंक्ति पर निर्भर करती है। मैं उस जानकारी को एक (संभावित रूप से) विशाल चयन कथन लिखने के बिना प्राप्त करना चाहता हूं जो लक्ष्य तालिका के साथ प्रत्येक संभावित तालिका में शामिल हो जाता है। –