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

SQL सर्वर में एकाधिक कॉलम पर विदेशी कुंजी बाधा कैसे बनाएं - SQL सर्वर / TSQL ट्यूटोरियल भाग 67

परिदृश्य:

आप SQL सर्वर डेवलपर के रूप में काम कर रहे हैं, आपको कॉलम FName और SSN का उपयोग करके समग्र प्राथमिक कुंजी के साथ एक तालिका dbo.Customer बनाने की आवश्यकता है। एक आप dbo में प्राथमिक कुंजी बनाने के साथ कर रहे हैं। ग्राहक तालिका, आपको दूसरी तालिका dbo बनाने की आवश्यकता है। प्राथमिक कुंजी कॉलम का उपयोग करके विदेशी कुंजी बाधा उत्पन्न करें और आदेश दें।

समाधान:

आइए नीचे दिए गए स्क्रिप्ट का उपयोग करके समग्र प्राथमिक कुंजी के साथ dbo.Customer तालिका बनाएं। ,LName VARCHAR(100),SSN VARCHAR(10) नल नहीं, बाधा Pk_FName_SSN प्राथमिक कुंजी (FName,SSN))



ध्यान दें कि हमने कम्पोजिट प्राथमिक कुंजी बनाने के लिए Constraint_Name Primary Key(Column1, Column2) का उपयोग किया है, जैसा कि हरे रंग में हाइलाइट किया गया है।
चलिए dbo बनाते हैं।आदेश नीचे दी गई स्क्रिप्ट का उपयोग करके तालिका। 10) शून्य नहीं, प्रतिबंध Fk_Order_Customer_FName_SSN विदेशी कुंजी (प्रथम नाम, SSN) संदर्भ dbo.Customer(FName,SSN))



विदेशी कुंजी बाधा बनाने के लिए कई स्तंभों के साथ आप स्क्रिप्ट का उपयोग करेंगे जैसा कि हरे रंग में हाइलाइट किया गया है। आप कहेंगे Constraint_Name विदेशी कुंजी(कॉलम1,कॉलम2)संदर्भ dbo.PrimaryKeyTable(PrimaryKeyColumn1,PrimaryKeyColumn2)
आप देख सकते हैं कि dbo.Orders में, मेरे पास dbo.Customer तालिका में FName के बजाय कॉलम FirstName है। इसका मतलब है कि जब आप विदेशी कुंजी संदर्भ बना रहे हों तो दोनों तालिकाओं में आपके पास समान कॉलम नाम नहीं होना चाहिए। बाधा। ('टीवी', 1, 'आमिर', '000-000-01')
 
 रिकॉर्ड सफलतापूर्वक डाले गए हैं। आइए Select query
का उपयोग करके सत्यापित करते हैं
एसक्यूएल सर्वर टेबल में एकाधिक कॉलम पर विदेशी कुंजी बाधा कैसे बनाएं


चलो dbo में एक मान डालने का प्रयास करते हैं। आदेश जो dbo.Customer में मौजूद नहीं है। यह हमारे माध्यम से विदेशी कुंजी बाधा के कारण त्रुटि के रूप में होना चाहिए। 02')
चूंकि हाइलाइट किया गया SSN मान dbo में मौजूद नहीं है. डेटाबेस "YourDatabaseName", तालिका "dbo.Customer" में विरोध हुआ। कथन समाप्त कर दिया गया है।


*** कॉलम का क्रम वही होना चाहिए जो आपके पास प्राथमिक कुंजी में होता है जब हम विदेशी कुंजी बाधा बनाते हैं। अगर मैं अलग-अलग ऑर्डर के साथ विदेशी कुंजी बाधा बनाने की कोशिश करता हूं, तो मुझे नीचे त्रुटि मिलेगी। VARCHAR(100), SSN VARCHAR(10) शून्य नहीं, प्रतिबंध Fk_Order_Customer_FName_SSN विदेशी कुंजी (SSN, FirstName) संदर्भ dbo.Customer(SSN,FName))
 
 संदेश 1776, स्तर 16, राज्य 0, पंक्ति 13 संदर्भित तालिका 'dbo.Customer' में कोई प्राथमिक या उम्मीदवार कुंजी नहीं है जो विदेशी कुंजी 'Fk_Order_Customer_FName_SSN' में संदर्भित कॉलम सूची से मेल खाती है। संदेश 1750, स्तर 16, राज्य 0, रेखा 13 बाधा या अनुक्रमणिका नहीं बना सका। पिछली त्रुटियां देखें।


वीडियो डेमो :SQL सर्वर में एकाधिक कॉलम पर विदेशी कुंजी बाधा कैसे बनाएं







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

  2. SQL Group BY, प्रत्येक समूह के लिए शीर्ष N आइटम

  3. सबसे धीमी क्वेरी कैसे खोजें

  4. SQL सर्वर में वर्तमान सत्र के लिए दिनांक स्वरूप बदलें

  5. एसक्यूएल सर्वर (टी-एसक्यूएल) में मुद्रा के रूप में संख्याओं को कैसे प्रारूपित करें