Om du har en komposit primärnyckel, sedan alla främmande nyckelbegränsningar som refererar till den måste använda alla kolumner av den sammansatta primärnyckeln.
Så i ditt fall - TableTwo
måste referens TableOne(ReportID, Date)
Det enda sättet att komma runt detta skulle vara att skapa ett UNIQUE INDEX
på TableOne (ReportID)
- då kan du skapa en främmande nyckelreferens enbart till den unika begränsningen.
Men det väcker då frågan:varför är inte ReportID
endast primärnyckeln, om den redan är unik (eftersom du kan sätta ett UNIQUE INDEX
på den) och INTE NULL (eftersom den är en del av sammansättningen PK) ?
Steg 1:skapa UNIQUE INDEX
:
CREATE UNIQUE NONCLUSTERED INDEX UIX_TableOne ON dbo.TableOne(ReportID);
Steg 2:skapa den främmande nyckeln från TableTwo
:
ALTER TABLE dbo.TableTwo
ADD CONSTRAINT FK_TableTwo_TableOne
FOREIGN KEY(ReportID) REFERENCES dbo.TableOne(ReportID)