58 votes

Relation de clé étrangère avec des clés primaires composites dans SQL Server 2005

j'ai deux tables

 Table1(
  FileID,
  BundledFileID,
  Domain)

et

 Table2(
  FileID,
  FileType,
  FileName)

Dans le tableau 2, FileID et FileType sont la clé primaire composite. Je souhaite créer une relation de clé étrangère de Table1.FileID à Table2 .

Est-il possible de faire cela?

98voto

marc_s Points 321990

Étant donné que Table2 a une clé primaire composite (FileID, FileType) , toute référence à celle-ci doit également inclure les deux colonnes .

 ALTER TABLE dbo.Table1
  ADD CONSTRAINT FK_Table1_Table2
  FOREIGN KEY(FileID, FileType) REFERENCES Table2(FileID, FileType)

À moins que vous n'ayez une contrainte/index unique sur le Table2.FileID (mais si oui : pourquoi n'est-ce pas le PK ??), vous ne pouvez pas créer une relation FK avec uniquement des parties du PK sur la table cible - Je ne peux pas le faire.

4voto

Damien_The_Unbeliever Points 102139

marc a déjà donné une assez bonne réponse. Si les lignes de Table1 ne se rapportent qu'à un seul type de fichier (par exemple, FileType 'ABC'), vous pouvez ajouter FileType à Table1 en tant que colonne calculée :

 ALTER TABLE Table1 ADD FileType as 'ABC'

Que vous pouvez ensuite utiliser dans la clé étrangère.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X