При наличие на скомп първичен ключ, след това всички ограниченията на външния ключ, които го препращат, трябва да използват всички колони на съставния първичен ключ.
Така че във вашия случай - TableTwo
задължително справка TableOne(ReportID, Date)
Единственият начин да се заобиколи това е да се създаде UNIQUE INDEX
на TableOne (ReportID)
- тогава можете да създадете препратка към външен ключ само за това уникално ограничение.
Но тогава възниква въпросът:защо не е ReportID
само първичния ключ, ако вече е уникален (тъй като можете да поставите UNIQUE INDEX
върху него) и НЕ NULL (тъй като е част от съставния PK)?
Стъпка 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)