आप OBJECTPROPERTY()
. का उपयोग कर सकते हैं यह जांचने के लिए SQL सर्वर में कार्य करता है कि किसी तालिका को किसी विदेशी कुंजी द्वारा संदर्भित किया गया है या नहीं।
ऐसा करने के लिए, तालिका के ऑब्जेक्ट आईडी को पहले तर्क के रूप में पास करें, और TableHasForeignRef
दूसरे तर्क के रूप में। फ़ंक्शन एक 1
देता है या एक 0
इस पर निर्भर करता है कि यह किसी विदेशी कुंजी द्वारा संदर्भित है या नहीं।
1
. का वापसी मान इसका अर्थ है कि तालिका है एक विदेशी कुंजी द्वारा संदर्भित, और 0
. का मान इसका मतलब है कि ऐसा नहीं है।
ध्यान दें कि यहां प्रस्तुत उदाहरण विदेशी कुंजियों या उनकी तालिकाओं या ऐसा कुछ भी सूचीबद्ध नहीं करते हैं। वे बस एक सही/गलत मान लौटाते हैं जिसका उपयोग आप यह जांचने के लिए कर सकते हैं कि किसी तालिका को किसी विदेशी कुंजी द्वारा संदर्भित किया गया है या नहीं। यदि आपको किसी दी गई तालिका को संदर्भित करने वाली सभी विदेशी कुंजियों को सूचीबद्ध करने की आवश्यकता है, तो SQL सर्वर में दी गई तालिका को संदर्भित करने वाली सभी विदेशी कुंजी वापस करें देखें। उस आलेख के उदाहरण प्रत्येक विदेशी कुंजी, साथ ही विदेशी कुंजी तालिका/तालिकाओं और प्राथमिक कुंजी तालिका को सूचीबद्ध करते हैं।
उदाहरण 1 - मूल उपयोग
प्रदर्शित करने के लिए यहां एक त्वरित उदाहरण दिया गया है।
USE WideWorldImportersDW; SELECT OBJECTPROPERTY(1141579105, 'TableHasForeignRef') AS [TableHasForeignRef];
परिणाम:
+----------------------+ | TableHasForeignRef | |----------------------| | 1 | +----------------------+
इस मामले में, WideWorldImportersDW डेटाबेस में प्रदान की गई आईडी के साथ एक तालिका है, और इसे एक विदेशी कुंजी द्वारा संदर्भित किया जाता है।
उदाहरण 2 - ऑब्जेक्ट आईडी प्राप्त करना
यदि आप तालिका का नाम जानते हैं, लेकिन उसकी आईडी नहीं, तो आप OBJECT_ID()
का उपयोग कर सकते हैं आईडी को उसके नाम के आधार पर पुनः प्राप्त करने के लिए कार्य करता है।
उदाहरण:
SELECT OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasForeignRef') AS [TableHasForeignRef];
परिणाम:
+----------------------+ | TableHasForeignRef | |----------------------| | 1 | +----------------------+
पिछले उदाहरण से यह वही वस्तु है।
यहां यह फिर से अलग से आईडी आउटपुट के साथ है।
SELECT OBJECT_ID('Dimension.City') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasForeignRef') AS [TableHasForeignRef];
परिणाम:
+-------------+----------------------+ | Object ID | TableHasForeignRef | |-------------+----------------------| | 1013578649 | 1 | +-------------+----------------------+
उदाहरण 3 - जब तालिका को किसी विदेशी कुंजी द्वारा संदर्भित नहीं किया जाता है
यहां बताया गया है कि क्या होता है जब तालिका को किसी विदेशी कुंजी द्वारा संदर्भित नहीं किया जाता है।
SELECT OBJECTPROPERTY(OBJECT_ID('Integration.Lineage'), 'TableHasForeignRef') AS [TableHasForeignRef];
परिणाम:
+----------------------+ | TableHasForeignRef | |----------------------| | 0 | +----------------------+
इस मामले में, वस्तु एक तालिका है, यह सिर्फ एक विदेशी कुंजी द्वारा संदर्भित नहीं है।
उदाहरण 4 - जब वस्तु एक तालिका नहीं है
यहां बताया गया है कि क्या होता है जब डेटाबेस में आईडी के साथ कोई ऑब्जेक्ट होता है, लेकिन वह ऑब्जेक्ट टेबल नहीं होता है।
SELECT OBJECTPROPERTY(OBJECT_ID('Sequences.ReseedAllSequences'), 'TableHasForeignRef') AS [TableHasForeignRef];
परिणाम:
+----------------------+ | TableHasForeignRef | |----------------------| | NULL | +----------------------+
उदाहरण 5 - वस्तु मौजूद नहीं है
SQL सर्वर मानता है कि ऑब्जेक्ट आईडी वर्तमान डेटाबेस संदर्भ में है। यदि आप किसी भिन्न डेटाबेस से ऑब्जेक्ट आईडी पास करते हैं, तो आपको या तो एक पूर्ण परिणाम मिलेगा या आपको गलत परिणाम मिलेंगे।
SELECT OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'TableHasForeignRef') AS [InvalidObject], OBJECTPROPERTY(12345678, 'TableHasForeignRef') AS [12345678];
परिणाम:
+-----------------+------------+ | InvalidObject | 12345678 | |-----------------+------------| | NULL | NULL | +-----------------+------------+
इस मामले में डेटाबेस में उस नाम या आईडी की कोई वस्तु नहीं है, और इसलिए मुझे एक पूर्ण परिणाम मिलता है।
त्रुटि होने पर या यदि आपके पास ऑब्जेक्ट देखने की अनुमति नहीं है, तो आपको NULL भी मिलेगा।