2016-11-25 4 views
-1

j'essaie de le faire dans mysql:MySQL: clé primaire composite clé étrangère

Créer une première table A, B, C colonnes et une clé primaire composite sur A et B. Créer une deuxième table A , B, D, E colonnes avec A, B, D comme clé primaire et bien sûr A, B référencé comme un étranger de la première table.

J'utilise MySQL Workbench pour crée des colonnes, ajouter des contraintes clés et foreigns, mais lorsque je tente d'appliquer i cette erreur:

erreur 1215: Impossible d'ajouter la contrainte de clé étrangère

La chose est que je Je ne sais pas ce qui ne va pas avec mon design.

Pouvez-vous m'aider?

+0

Veuillez donner un [mcve] et lire [ask]. En particulier, montrez votre DDL. Vous ne réalisez probablement pas que les colonnes référencées d'un FK doivent être déclarées PK ou UNIQUE NOT NULL. (Ici, AB dans ABDE.) Mais "référencé comme une clé étrangère" n'a pas de sens. Un FK fait le référencement. Et je suppose que vous voulez réellement ABDE (AB) REFERENCES ABC (AB). S'il vous plaît google une description de votre problème (en utilisant "références" dans le bon sens), c'est une faq. – philipxy

Répondre

0

Votre problème est que vous avez (A, B) paires dans la deuxième table qui n'ont pas de correspondances dans votre première table.

Exécuter ceci:

select secondTable.A, secondTable.B 
from secondTable 
where not exists (select 1 
        from firstTable 
        where firstTable.A = secondTable.A and firstTable.B = secondTable.B); 

Avec cette requête, vous trouverez A, B valeurs secondTable qui ne correspondent à aucun des enregistrements dans firstTable.

Pour pouvoir créer votre foreign key, vous devrez soit supprimer les enregistrements de secondTable ou insert leurs matchs intofirstTable.

+0

Merci pour votre aide. En fait, je n'ai pas de données dans la deuxième table parce que je le construis. –

+0

@RonanQuintin, est-ce que les types des tables correspondent? Pouvez-vous nous donner du code? –