2010-02-17 7 views
0

J'essaie d'ajouter une contrainte de clé étrangère à une table dans ma base de données PostgreSQL 8.4, mais elle échoue en tant que champ cible, mais fait partie d'une primaire multi-colonnes clé, n'est pas en soi unique.Ajout de la contrainte de clé étrangère à la clé primaire 'partielle' dans PostgreSQL

La base de données a la structure suivante:

Tableau 1 (noms des identifiants primaires):

PrimaryType, Name 
[Primary key = "PrimaryType"] 

Tableau 2 (noms des identifiants d'enfant pour chaque type d'ID primaire):

PrimaryType, SubType, Name 
[Primary key = "PrimaryType, SubType"] 
[Foreign key = "Table2.PrimaryType = Table1.PrimaryType"] 

Tableau 3 (journaux contenant un ID principal et un ID enfant):

PrimaryType, SubType, DATA1, DATA2, ..., DATAN 
[Foreign key = "Table3.PrimaryType = Table1.PrimaryType" AND "Table3.SubType = Table2.SubType"] 

Évidemment, la deuxième partie de la clé étrangère pour la table 3 est ce qui cause le problème. Je dois juste m'assurer que la paire d'ID de primaire et de sous-type dans le journal est une combinaison valide.

Merci d'avance.

Répondre

2

Pour le tableau 3 de clé étrangère, le changement:

foreign key PrimaryType references Table1(PrimaryType) 
foreign key SubType references Table2(Subtype) 

à

foreign key (PrimaryType, SubType) references Table2(PrimaryType, SubTYpe) 
+0

grâce, qui a travaillé – James

Questions connexes