Hvis du har en sammensat primær nøgle, derefter alle fremmednøglebegrænsninger, der refererer til det, skal bruge alle kolonner af den sammensatte primærnøgle.
Så i dit tilfælde - TableTwo
skal reference TableOne(ReportID, Date)
Den eneste måde at undgå dette på ville være at oprette et UNIQUE INDEX
på TableOne (ReportID)
- så kan du oprette en fremmednøglereference til den unikke begrænsning alene.
Men det rejser så spørgsmålet:hvorfor er ReportID
ikke alene den primære nøgle, hvis den allerede er unik (da du kan sætte en UNIQUE INDEX
på den) og IKKE NULL (da den er en del af sammensætningen PK) ?
Trin 1:Opret UNIQUE INDEX
:
CREATE UNIQUE NONCLUSTERED INDEX UIX_TableOne ON dbo.TableOne(ReportID);
Trin 2:Opret fremmednøglen fra TableTwo
:
ALTER TABLE dbo.TableTwo
ADD CONSTRAINT FK_TableTwo_TableOne
FOREIGN KEY(ReportID) REFERENCES dbo.TableOne(ReportID)