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