begin process at 2012 05 26 17:27:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Débutant(s)

 > 

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


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

lundi 4 mai 2009 à 09:31:36 | {MySql] Problème d'intégrité référentielle

beegeezzz

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
lundi 4 mai 2009 à 12:11:54 | Re : Je n'arrive pas à appliquer l'intégrité référentielle sur ma bd

aieeeuuuuu

Réponse acceptée !
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 ?
lundi 4 mai 2009 à 12:44:50 | Re : Je n'arrive pas à appliquer l'intégrité référentielle sur ma bd

beegeezzz

Bonjour,

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

Merci beaucoup, cela fonctionne super bien maintenant.

beegeezzz


Cette discussion est classée dans : table, id, cours, index, cascade


Répondre à ce message

Sujets en rapport avec ce message

Index [ par crn_c21 ] Bonjour, J'ai une petite question (surement bète!) sur les index(SQL 2005). Si dans une Table je crée un Index A sur le champ Id(asc) et que sur cet Correction de Trigger [ par 4rocky4 ] Bonjour tout le monde,Je voudrai créer des triggers qui permettent de mettre à jour des tables sous Oracle.Par exemple, si on modifie la clef primaire Problème de requêtes imbriquées [ par sebshiva ] Bonjour, Malgré plusieurs heures de recherche, je ne trouve pas comment faire fonctionner cette requête mysql... SELECT tel.tel_tel, tel.type_tel, adr Boucler sur deux tables [ par XtazyMushroom ] Bonjour j'ai un petit probleme pour executer une boucle sur deux tables. Je m'explique J'ai une table 1 et une table 2: Table 1 id(char) valeur 334 probleme erreur 1064 [ par ritchou42 ] [color=orange]salut tout le monde j'ai crée a l'aide de aqua data studio des table SQL et j'ai une erreur quand j'essaye de mettre ma table avec my_ Update d'un champ d'une table vers un autre champ... [ par deejoss ] Bonjour a tous, je suis devant un problème : je cherche a mettre à jour une table avec un id d'une autre table : je souhaite renseigner dans la table Trigger after delete [ par mictif ] Bonjour ! Je suis confronté a un probleme. je ne connais pas bien les trigger mais ai besoin d'en utiliser un. J'aimerais, lorsque qu'une ligne est Jointures externes compliquées [ par fred02 ] Bonjour, je tente de faire une requête sql mais sans succès. voici le schéma PERSONNE (#ID,Nom,Prenom) TABLE(#ID,Titre,#PERSONNE) PARTIE(#ID,Date,PE SQL Verifier si un Index Existe pour un table donnée [ par jam01 ] Bonjour, Je développe un programme en .Net qui crée une table et un index sur celle ci. J'ai trouver comment ne créer la table que si elle n'existe pa Plusieurs colonnes ou plusieurs tables ? [ par hotmaskim ] Bonjour, J'ai une table qui va servir à remplacer un fichier XML faisant un mapping entre un id source et un id destination. Maintenant, l'id sourc


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales