आप OBJECTPROPERTY()
. का उपयोग कर सकते हैं ऑब्जेक्ट प्राथमिक कुंजी है या नहीं, यह जांचने के लिए SQL सर्वर में फ़ंक्शन।
यह पता लगाने के लिए कि क्या कोई ऑब्जेक्ट प्राथमिक कुंजी है, ऑब्जेक्ट आईडी को पहले तर्क के रूप में पास करें, और IsPrimaryKey
दूसरे तर्क के रूप में। फ़ंक्शन एक 1
देता है या एक 0
इस पर निर्भर करता है कि यह प्राथमिक कुंजी है या नहीं।
1
. का वापसी मान इसका मतलब है कि यह है एक प्राथमिक कुंजी, और 0
. का मान इसका मतलब है कि ऐसा नहीं है।
उदाहरण 1 - मूल उपयोग
प्रदर्शित करने के लिए यहां एक त्वरित उदाहरण दिया गया है।
USE PK_Test; SELECT OBJECTPROPERTY(901578250, 'IsPrimaryKey') AS [IsPrimaryKey];
परिणाम:
+----------------+ | IsPrimaryKey | |----------------| | 1 | +----------------+
इस मामले में, PK_Test डेटाबेस में प्रदान की गई आईडी के साथ एक ऑब्जेक्ट है, और यह एक प्राथमिक कुंजी है।
उदाहरण 2 - ऑब्जेक्ट आईडी प्राप्त करना
यदि आप वस्तु का नाम जानते हैं, लेकिन उसकी आईडी नहीं, तो आप OBJECT_ID()
का उपयोग कर सकते हैं आईडी को उसके नाम के आधार पर पुनः प्राप्त करने के लिए कार्य करता है।
उदाहरण:
SELECT OBJECTPROPERTY(OBJECT_ID('PK_Musician'), 'IsPrimaryKey') AS [IsPrimaryKey];
परिणाम:
+----------------+ | IsPrimaryKey | |----------------| | 1 | +----------------+
इस मामले में मैंने पिछले उदाहरण से उसी वस्तु की जाँच की।
यहां यह फिर से अलग से आईडी आउटपुट के साथ है।
SELECT OBJECT_ID('PK_Musician') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('PK_Musician'), 'IsPrimaryKey') AS [IsPrimaryKey];
परिणाम:
+-------------+----------------+ | Object ID | IsPrimaryKey | |-------------+----------------| | 901578250 | 1 | +-------------+----------------+
उदाहरण 3 - जब ऑब्जेक्ट प्राथमिक कुंजी नहीं है
यहां बताया गया है कि जब ऑब्जेक्ट प्राथमिक कुंजी नहीं होता है तो क्या होता है।
SELECT OBJECTPROPERTY(885578193, 'IsPrimaryKey') AS [IsPrimaryKey];
परिणाम:
+----------------+ | IsPrimaryKey | |----------------| | 0 | +----------------+
इस मामले में, डेटाबेस करता है वास्तव में उस आईडी के साथ एक वस्तु है, लेकिन वस्तु वास्तव में एक तालिका है, इसलिए मुझे एक नकारात्मक परिणाम मिलता है।
यहां यह फिर से OBJECT_ID()
का उपयोग कर रहा है ।
SELECT OBJECT_ID('Musician') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Musician'), 'IsPrimaryKey') AS [IsPrimaryKey], OBJECTPROPERTY(OBJECT_ID('Musician'), 'IsTable') AS [IsTable];
परिणाम:
+-------------+----------------+-----------+ | Object ID | IsPrimaryKey | IsTable | |-------------+----------------+-----------| | 885578193 | 0 | 1 | +-------------+----------------+-----------+
मैंने यह देखने के लिए भी जाँच की कि क्या वस्तु एक तालिका है, और परिणाम सकारात्मक है।
उदाहरण 4 - वस्तु मौजूद नहीं है
SQL सर्वर मानता है कि ऑब्जेक्ट आईडी वर्तमान डेटाबेस संदर्भ में है। यदि आप किसी भिन्न डेटाबेस से ऑब्जेक्ट आईडी पास करते हैं, तो आपको या तो एक पूर्ण परिणाम मिलेगा या आपको गलत परिणाम मिलेंगे।
SELECT OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'IsPrimaryKey') AS [InvalidObject], OBJECTPROPERTY(12345678, 'IsPrimaryKey') AS [12345678];
परिणाम:
+-----------------+------------+ | InvalidObject | 12345678 | |-----------------+------------| | NULL | NULL | +-----------------+------------+
इस मामले में डेटाबेस में उस नाम या आईडी की कोई वस्तु नहीं है, और इसलिए मुझे एक पूर्ण परिणाम मिलता है।
त्रुटि होने पर या यदि आपके पास ऑब्जेक्ट देखने की अनुमति नहीं है, तो आपको NULL भी मिलेगा।