{MySql] Problème d'intégrité référentielle

Résolu
beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 - 4 mai 2009 à 09:31
beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 - 4 mai 2009 à 12:44
Bonjour tout le monde,

J'ai une table qui est nommé "cours" dont voici la structure :

ID      int(11)       Non               
MNEMONIC     varchar(255)     Non            
NOM_ANNEE     varchar(255)     Non            
NOM_COURS     varchar(255)     Non            
ECTS     int(11)     Non            
PONDERATION     float     Non            
TYPE_DE_COURS     varchar(255)     Non            
Cloture     tinyint(1)     Non      0      
Cloture_le     date     Oui      NULL      
Categorie     varchar(25)     Non            

Index:
Nom de l'index     Type     Cardinalité     Champ
PRIMARY     PRIMARY     85      ID
NOM_ANNEE     INDEX     8      NOM_ANNEE

J'ai une autre tabe nommée "cao_choisis" dont voici la structure :

Champ      Type       Null      Défaut       Commentaires
MATRICULE_ET     varchar(10)     Non            
ID_Cours     int(11)     Non            

Index:
Nom de l'index     Type     Cardinalité     Champ
[B]PRIMARY     PRIMARY     0      MATRICULE_ET
ID_Cours/B
MATRICULE_ET     INDEX     0      MATRICULE_ET
ID_Cours     INDEX     0      ID_Cours

Je voudrais que ID_Cours de la table cao soit une clé étrangère de la table cours.

Cela me permettrait d'effacer et de mettre à jour en cascade.

Si je supprime un cours dans la table "cours", cela supprime les ID correspondant dans la table cao_choisis.

J'ai essayé avec mysql mais j'obtiens ce message d'erreur :

Erreur

requête SQL:

ALTER TABLE `cours` ADD FOREIGN KEY ( `ID` ) REFERENCES `pharma`.`cao_choisis` (
`ID_Cours`
) ON DELETE CASCADE ON UPDATE CASCADE ;

MySQL a répondu:Documentation
#1452 - Cannot add or update a child row: a foreign key constraint fails (`pharma/#sql-1054_4ea`, CONSTRAINT `#sql-1054_4ea_ibfk_1` FOREIGN KEY (`ID`) REFERENCES `cao_choisis` (`ID_Cours`) ON DELETE CASCADE ON UPDATE CASCADE)
Documentation
Erreur
requête SQL:
ALTER TABLE `cours` ADD FOREIGN KEY ( `ID` ) REFERENCES `pharma`.`cao_choisis` (
`ID_Cours`
) ON DELETE CASCADE ON UPDATE CASCADE ;/QUOTE

Sauriez-vous m'aider svp à résoudre ce problème ?

Je vous en remercie d'avance.

beegeezzz

2 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
4 mai 2009 à 12:11
bonjour

avez vous vérifié que vos données actuellement contenues dans ces tables respecte la contrainte d'integrité que vous tentez de mettre en place ?

commencez par supprimer les données qui ne la respectent pas, et retentez l'opération.

Cependant, a bien y reflechir, je me demande si vous ne placer pas votre contrainte "à l'envers"...

n'est-ce pas plutot sur la table cao_choisi que vous devez mettre une contrainte, afin que le ID_Cours corresponde à un ID de la table cours ?
3
beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 1
4 mai 2009 à 12:44
Bonjour,

Oui en effet, je faisais le travaille à l'envers

Merci beaucoup, cela fonctionne super bien maintenant.

beegeezzz
0
Rejoignez-nous