Se você tiver um composto chave primária e, em seguida, todos restrições de chave estrangeira que fazem referência a ela devem usar todas as colunas da chave primária composta.
Então, no seu caso -
TableTwo
deve referência TableOne(ReportID, Date)
A única maneira de contornar isso seria criar um
UNIQUE INDEX
em TableOne (ReportID)
- então você pode criar uma referência de chave estrangeira apenas para essa restrição exclusiva. Mas isso levanta a questão:por que não é
ReportID
sozinho a chave primária, se já for única (já que você pode colocar um UNIQUE INDEX
nele) e NOT NULL (já que faz parte do composto PK) ? Etapa 1:crie o
UNIQUE INDEX
:CREATE UNIQUE NONCLUSTERED INDEX UIX_TableOne ON dbo.TableOne(ReportID);
Etapa 2:crie a chave estrangeira de
TableTwo
:ALTER TABLE dbo.TableTwo
ADD CONSTRAINT FK_TableTwo_TableOne
FOREIGN KEY(ReportID) REFERENCES dbo.TableOne(ReportID)