J'ai deux tables
Table1(
FileID,
BundledFileID,
Domain)
et
Table2(
FileID,
FileType,
FileName)
Dans Table2 FileID
et FileType
sont la clé primaire composite. Je souhaite créer une relation de clé étrangère à partir de Table1.FileID
à Table2
.
Est-il possible de faire cela?
Puisque Table2 a une clé primaire composite (FileID, FileType)
, toute référence à celui-ci doit également inclure les deux colonnes.
ALTER TABLE dbo.Table1
ADD CONSTRAINT FK_Table1_Table2
FOREIGN KEY(FileID, FileType) REFERENCES Table2(FileID, FileType)
Sauf si vous avez une contrainte/un index unique sur le Table2.FileID
champ (mais si c'est le cas: pourquoi n'est-ce pas le PK ??), vous ne pouvez pas créer une relation FK avec seulement des parties du PK sur la table cible - ne pouvez tout simplement pas le faire.
marc a déjà donné une assez bonne réponse. Si les lignes du tableau 1 ne concernent qu'un seul type de fichier (par exemple, FileType `` ABC ''), vous pouvez ajouter FileType au tableau1 en tant que colonne calculée:
ALTER TABLE Table1 ADD FileType as 'ABC'
Que vous pouvez ensuite utiliser dans la clé étrangère.