Wenn Sie ein Composite haben Primärschlüssel, dann all Fremdschlüsseleinschränkungen, die darauf verweisen, müssen alle Spalten verwenden des zusammengesetzten Primärschlüssels.
Also in Ihrem Fall - TableTwo
müssen Referenz TableOne(ReportID, Date)
Der einzige Weg, dies zu umgehen, wäre, einen UNIQUE INDEX
zu erstellen auf TableOne (ReportID)
- dann können Sie einen Fremdschlüsselverweis nur auf diese eindeutige Einschränkung erstellen.
Aber das wirft dann die Frage auf:Warum ist nicht ReportID
allein der Primärschlüssel, wenn er bereits eindeutig ist (da Sie einen UNIQUE INDEX
setzen können darauf) und NOT NULL (da es Teil des zusammengesetzten PK ist) ?
Schritt 1:Erstellen Sie den UNIQUE INDEX
:
CREATE UNIQUE NONCLUSTERED INDEX UIX_TableOne ON dbo.TableOne(ReportID);
Schritt 2:Erstellen Sie den Fremdschlüssel aus TableTwo
:
ALTER TABLE dbo.TableTwo
ADD CONSTRAINT FK_TableTwo_TableOne
FOREIGN KEY(ReportID) REFERENCES dbo.TableOne(ReportID)