Si vous avez un composite clé primaire, puis tous les contraintes de clé étrangère qui y font référence doivent utiliser toutes les colonnes de la clé primaire composite.
Donc dans votre cas - TableTwo
doit référence TableOne(ReportID, Date)
Le seul moyen de contourner cela serait de créer un UNIQUE INDEX
sur TableOne (ReportID)
- alors vous pouvez créer une référence de clé étrangère à cette seule contrainte unique.
Mais cela soulève alors la question suivante :pourquoi ReportID
n'est-il pas seule la clé primaire, si elle est déjà unique (puisque vous pouvez mettre un UNIQUE INDEX
dessus) et NOT NULL (puisqu'il fait partie du composé PK) ?
Étape 1 :créez l'UNIQUE INDEX
:
CREATE UNIQUE NONCLUSTERED INDEX UIX_TableOne ON dbo.TableOne(ReportID);
Étape 2 :créez la clé étrangère à partir de TableTwo
:
ALTER TABLE dbo.TableTwo
ADD CONSTRAINT FK_TableTwo_TableOne
FOREIGN KEY(ReportID) REFERENCES dbo.TableOne(ReportID)