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

जांचें कि क्या तालिका में OBJECTPROPERTY () के साथ SQL सर्वर में एक विदेशी कुंजी है

आप OBJECTPROPERTY() . का उपयोग कर सकते हैं यह जांचने के लिए SQL सर्वर में कार्य करता है कि किसी तालिका में एक या अधिक विदेशी कुंजी बाधाएं हैं या नहीं।

ऐसा करने के लिए, तालिका के ऑब्जेक्ट आईडी को पहले तर्क के रूप में पास करें, और TableHasForeignKey दूसरे तर्क के रूप में। फ़ंक्शन एक 1 देता है या एक 0 इस पर निर्भर करता है कि इसमें विदेशी कुंजी बाधा है या नहीं।

1 . का वापसी मान इसका मतलब है कि तालिका करती है एक विदेशी कुंजी बाधा है, और 0 . का मान है इसका मतलब है कि नहीं। 1 . का वापसी मान इस बात पर ध्यान दिए बिना कि तालिका में कितनी विदेशी कुंजियाँ हैं (जब तक इसमें कम से कम एक है)।

यदि आप विदेशी कुंजियों की एक वास्तविक सूची चाहते हैं, तो SQL सर्वर में तालिका में सभी विदेशी कुंजियों की सूची देखें।

उदाहरण 1 - मूल उपयोग

प्रदर्शित करने के लिए यहां एक त्वरित उदाहरण दिया गया है।

USE WideWorldImportersDW;
SELECT OBJECTPROPERTY(1493580359, 'TableHasForeignKey') AS [TableHasForeignKey];

परिणाम:

+----------------------+
| TableHasForeignKey   |
|----------------------|
| 1                    |
+----------------------+

इस मामले में, WideWorldImportersDW डेटाबेस में प्रदान की गई आईडी के साथ एक तालिका है, और इसमें एक विदेशी कुंजी बाधा है।

उदाहरण 2 - ऑब्जेक्ट आईडी प्राप्त करना

यदि आप तालिका का नाम जानते हैं, लेकिन उसकी आईडी नहीं, तो आप OBJECT_ID() का उपयोग कर सकते हैं आईडी को उसके नाम के आधार पर पुनः प्राप्त करने के लिए कार्य करता है।

उदाहरण:

SELECT OBJECTPROPERTY(OBJECT_ID('Fact.Order'), 'TableHasForeignKey') AS [TableHasForeignKey];

परिणाम:

+----------------------+
| TableHasForeignKey   |
|----------------------|
| 1                    |
+----------------------+

पिछले उदाहरण से यह वही वस्तु है।

यहां यह फिर से अलग से आईडी आउटपुट के साथ है।

SELECT 
  OBJECT_ID('Fact.Order') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('Fact.Order'), 'TableHasForeignKey') AS [TableHasForeignKey];

परिणाम:

+-------------+----------------------+
| Object ID   | TableHasForeignKey   |
|-------------+----------------------|
| 1493580359  | 1                    |
+-------------+----------------------+

उदाहरण 3 - जब तालिका में कोई विदेशी कुंजी नहीं है

यहां बताया गया है कि क्या होता है जब तालिका में कोई विदेशी कुंजी नहीं होती है।

SELECT OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasForeignKey') AS [TableHasForeignKey];

परिणाम:

+----------------------+
| TableHasForeignKey   |
|----------------------|
| 0                    |
+----------------------+

इस मामले में, ऑब्जेक्ट एक टेबल है, बस इसमें कोई विदेशी कुंजी नहीं है।

उदाहरण 4 - जब वस्तु एक तालिका नहीं है

यहां बताया गया है कि क्या होता है जब डेटाबेस में आईडी के साथ कोई ऑब्जेक्ट होता है, लेकिन वह ऑब्जेक्ट टेबल नहीं होता है।

SELECT OBJECTPROPERTY(OBJECT_ID('Sequences.ReseedAllSequences'), 'TableHasForeignKey') AS [TableHasForeignKey];

परिणाम:

+----------------------+
| TableHasForeignKey   |
|----------------------|
| NULL                 |
+----------------------+

उदाहरण 5 - वस्तु मौजूद नहीं है

SQL सर्वर मानता है कि ऑब्जेक्ट आईडी वर्तमान डेटाबेस संदर्भ में है। यदि आप किसी भिन्न डेटाबेस से ऑब्जेक्ट आईडी पास करते हैं, तो आपको या तो एक पूर्ण परिणाम मिलेगा या आपको गलत परिणाम मिलेंगे।

SELECT 
  OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'TableHasForeignKey') AS [InvalidObject],
  OBJECTPROPERTY(12345678, 'TableHasForeignKey') AS [12345678];

परिणाम:

+-----------------+------------+
| InvalidObject   | 12345678   |
|-----------------+------------|
| NULL            | NULL       |
+-----------------+------------+

इस मामले में डेटाबेस में उस नाम या आईडी की कोई वस्तु नहीं है, और इसलिए मुझे एक पूर्ण परिणाम मिलता है।

त्रुटि होने पर या यदि आपके पास ऑब्जेक्ट देखने की अनुमति नहीं है, तो आपको NULL भी मिलेगा।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर डेटाबेस ग्रोथ पर डेटा संग्रह को स्वचालित कैसे करें

  2. SQL सर्वर में MIN और MAX कुल कार्य

  3. क्या हमारे पास एक विदेशी कुंजी हो सकती है जो किसी अन्य तालिका में प्राथमिक कुंजी नहीं है?

  4. SQL सर्वर 2016 में नया मेटाडेटा-केवल कॉलम परिवर्तन

  5. SSMS 2019 (v18) के लिए एक्सटेंशन कैसे बनाएं