Se hai un composito chiave primaria, quindi tutto i vincoli di chiave esterna che fanno riferimento devono utilizzare tutte le colonne della chiave primaria composita.
Quindi nel tuo caso - TableTwo
deve riferimento TableOne(ReportID, Date)
L'unico modo per aggirare questo problema sarebbe creare un UNIQUE INDEX
su TableOne (ReportID)
- quindi puoi creare un riferimento di chiave esterna solo a quel vincolo univoco.
Ma questo fa sorgere la domanda:perché non è ReportID
da sola la chiave primaria, se è già unica (poiché puoi inserire un UNIQUE INDEX
su di esso) e NOT NULL (poiché fa parte del composto PK) ?
Passaggio 1:crea il UNIQUE INDEX
:
CREATE UNIQUE NONCLUSTERED INDEX UIX_TableOne ON dbo.TableOne(ReportID);
Passaggio 2:crea la chiave esterna da TableTwo
:
ALTER TABLE dbo.TableTwo
ADD CONSTRAINT FK_TableTwo_TableOne
FOREIGN KEY(ReportID) REFERENCES dbo.TableOne(ReportID)