28

में समग्र प्राथमिक कुंजी के साथ विदेशी कुंजी संबंध मैं दो तालिकाओंSQL सर्वर 2005

Table1(
    FileID, 
    BundledFileID, 
    Domain) 

और

Table2(
    FileID, 
    FileType, 
    FileName) 

तालिका 2 FileID में और FileType समग्र प्राथमिक कुंजी हैं। मैं Table1.FileID से Table2 से एक विदेशी कुंजी संबंध बनाना चाहता हूं।

क्या ऐसा करना संभव है?

उत्तर

61

चूंकि तालिका 2 में एक समग्र प्राथमिक कुंजी (FileID, FileType) है, तो इसके किसी भी संदर्भ में दोनों कॉलम शामिल होना चाहिए।

ALTER TABLE dbo.Table1 
    ADD CONSTRAINT FK_Table1_Table2 
    FOREIGN KEY(FileID, FileType) REFERENCES Table2(FileID, FileType) 

जब तक आप एक अद्वितीय बाधा/Table2.FileID मैदान पर सूचकांक (लेकिन यदि ऐसा है तो: क्यों इस पीके ?? नहीं है), तो आप नहीं निशाने पर पी के केवल भागों के लिए एक FK संबंध बना सकते हैं टेबल - बस यह नहीं कर सकता।

+1

क्या यह मानक एसक्यूएल या केवल एमएस एसक्यूएल सर्वर के लिए है? – Jus12

+2

@ जुस 12: यह मानक एसक्यूएल –

+0

है लेकिन तालिका 1 में "फ़ाइल टाइप" कॉलम नहीं है, क्या आपका मतलब है कि उसे पूरी तरह से बाधा उत्पन्न करने के उद्देश्य से तालिका 1 में कॉलम जोड़ना चाहिए? – BornToCode

3

मार्क ने पहले ही एक बहुत अच्छा जवाब दिया है। Table1 में पंक्तियों ही कभी फ़ाइल (जैसे फ़ाइल-प्रकार की 'एबीसी') का एक प्रकार से संबंधित है, तो आप फ़ाइल-प्रकार की Table1 को एक गणना स्तंभ के रूप में जोड़ सकते हैं:

ALTER TABLE Table1 ADD FileType as 'ABC' 

जो तुम तो विदेशी कुंजी में उपयोग कर सकते हैं।