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

beegeezzz 152 Messages postés mardi 4 novembre 2008Date d'inscription 10 avril 2017 Dernière intervention - 4 mai 2009 à 09:31 - Dernière réponse : beegeezzz 152 Messages postés mardi 4 novembre 2008Date d'inscription 10 avril 2017 Dernière intervention
- 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
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
aieeeuuuuu 698 Messages postés jeudi 16 janvier 2003Date d'inscription 20 mai 2011 Dernière intervention - 4 mai 2009 à 12:11
3
Merci
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 ?

Merci aieeeuuuuu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de aieeeuuuuu
beegeezzz 152 Messages postés mardi 4 novembre 2008Date d'inscription 10 avril 2017 Dernière intervention - 4 mai 2009 à 12:44
0
Merci
Bonjour,

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

Merci beaucoup, cela fonctionne super bien maintenant.

beegeezzz
Commenter la réponse de beegeezzz

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.