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

समग्र प्राथमिक कुंजी एसक्यूएल संबंध

यदि आपके पास समग्र . है प्राथमिक कुंजी, फिर सभी इसका संदर्भ देने वाली विदेशी कुंजी बाधाओं को सभी स्तंभों . का उपयोग करना चाहिए समग्र प्राथमिक कुंजी का।

तो आपके मामले में - TableTwo होना चाहिए संदर्भ TableOne(ReportID, Date)

इसका एकमात्र तरीका यह होगा कि एक UNIQUE INDEX . बनाया जाए TableOne (ReportID) . पर - तो आप अकेले उस अद्वितीय बाधा के लिए एक विदेशी कुंजी संदर्भ बना सकते हैं।

लेकिन इसके बाद सवाल उठता है:ReportID . क्यों नहीं है? अकेले प्राथमिक कुंजी, यदि यह पहले से ही अद्वितीय है (चूंकि आप UNIQUE INDEX डाल सकते हैं उस पर) और NOT NULL (चूंकि यह कंपाउंड पीके का हिस्सा है)?

चरण 1:UNIQUE INDEX बनाएं :

CREATE UNIQUE NONCLUSTERED INDEX UIX_TableOne ON dbo.TableOne(ReportID);

चरण 2:TableTwo . से विदेशी कुंजी बनाएं :

ALTER TABLE dbo.TableTwo
ADD CONSTRAINT FK_TableTwo_TableOne
FOREIGN KEY(ReportID) REFERENCES dbo.TableOne(ReportID)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. केवल एक पंक्ति सम्मिलित करना यदि वह पहले से मौजूद नहीं है

  2. यूडीएफ के बिना और सीएलआर के बिना टी-एसक्यूएल में एक स्ट्रिंग से सभी व्हाइटस्पेस वर्णों को ट्रिम करने का एक अच्छा तरीका क्या है?

  3. मैं SQL सर्वर में ऑटो वृद्धि मूल्य के साथ स्ट्रिंग कैसे जोड़ूं?

  4. जाँच करें कि क्या किसी स्ट्रिंग में संग्रहीत कार्यविधि का उपयोग करके SQL Server 2005 में एक सबस्ट्रिंग है

  5. स्ट्रिंग को हेक्स में कैसे बदलें और इसके विपरीत?