Les clés étrangères avec MYSQL
Fermé
Loading
Messages postés
56
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
24 décembre 2010
-
11 nov. 2007 à 15:53
sultan173 Messages postés 5 Date d'inscription dimanche 16 septembre 2007 Statut Membre Dernière intervention 24 novembre 2007 - 24 nov. 2007 à 05:29
sultan173 Messages postés 5 Date d'inscription dimanche 16 septembre 2007 Statut Membre Dernière intervention 24 novembre 2007 - 24 nov. 2007 à 05:29
A voir également:
- Les clés étrangères avec MYSQL
- Mysql community server - Télécharger - Bases de données
- Telecharger windows 8.1 avec clé d'activation gratuit - Guide
- Cles usb non reconnu - Guide
- Télécharger microsoft office 2010 avec clé d'activation gratuit - Télécharger - Sécurité
- Boite à clés master lock code perdu - Forum Matériel & Système
4 réponses
Bonjour,
Dans l'exemple cité, il n'y a aucune indication sur la manière dont sont déclarées les clés, donc on ne peut pas répondre.
De mémoire, sur MySql, les clés étrangères ne sont possibles que pour certaines organisations de base de données. Si on n'a pas la bonne organisation, c'est impossible. C'est à déclarer dans le "create table" et avec InnoDB ça marche.
Manu
Dans l'exemple cité, il n'y a aucune indication sur la manière dont sont déclarées les clés, donc on ne peut pas répondre.
De mémoire, sur MySql, les clés étrangères ne sont possibles que pour certaines organisations de base de données. Si on n'a pas la bonne organisation, c'est impossible. C'est à déclarer dans le "create table" et avec InnoDB ça marche.
Manu
sultan173
Messages postés
5
Date d'inscription
dimanche 16 septembre 2007
Statut
Membre
Dernière intervention
24 novembre 2007
23 nov. 2007 à 02:26
23 nov. 2007 à 02:26
Bonjour, j'ai le même probléme
Donc voici LE CODE de la table mére PARENT
/** Ajoute un status dans la base de donnée */
public void ajouterStatus(String pStatus){
try{
//POUR AJOUTER UN STATUS
for(int i = 0; i < Integer.parseInt(InterfaceDonnee.status.getText()); i++){
pStatus = tableDonnee.tabStatus[i];
String query = "INSERT INTO STATUS VALUES ('" + pStatus + "')";
System.out.println("(INSERT) NB ligne affectés : "+executerUpdate(query));
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
AFFICHE mes 3 Status ( est une clé primaire dans STATUS)
maintenant j'ai la table fils ou fille UTILISATEUR
/** Ajoute un utilisateur dans la base de donnée */
public void ajouterUtilisateur(String pNom, String pPrenom){
try{
//POUR AJOUTER UN UTILISATEUR
String nom = donnee.genererNom(pNom);
String prenom = donnee.genererPrenom(pPrenom);
String pMotDePasse = tableDonnee.tabPrenom[tableDonnee.nbPrenom];
String resultatStatus = "";
String query = "SELECT * FROM STATUS " ;
ResultSet rss = executerRequete(query);
for( int i=1; i < (int) (Math.random() * 3); i++){
resultatStatus = rss.getString("type_STATUS") ;
rss.next();
}
String queryInsert = "INSERT INTO UTILISATEUR VALUES ( '" + nom + "', '" + prenom + "', '" + pMotDePasse + "', '" + resultatStatus + "')";
System.out.println("(INSERT) NB ligne affectés : "+ executerUpdate(queryInsert));
}
catch(Exception e)
{
e.printStackTrace();
}
}
AFFICHE : Cannot add or update a child row: a foreign key constraint fails (`test`.`utilisateur`, CONSTRAINT `utilisateur_ibfk_1` FOREIGN KEY (`type_STATUS`) REFERENCES `status` (`type_STATUS`))
type_STATUS est une clé étrangére dans UTILISATEUR
est ce que cette syntaxe INSERT INTO UTILISATEUR VALUES est bonne pour inserer une clé etrangére.
je vous remercie de vos réponse. a+
Donc voici LE CODE de la table mére PARENT
/** Ajoute un status dans la base de donnée */
public void ajouterStatus(String pStatus){
try{
//POUR AJOUTER UN STATUS
for(int i = 0; i < Integer.parseInt(InterfaceDonnee.status.getText()); i++){
pStatus = tableDonnee.tabStatus[i];
String query = "INSERT INTO STATUS VALUES ('" + pStatus + "')";
System.out.println("(INSERT) NB ligne affectés : "+executerUpdate(query));
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
AFFICHE mes 3 Status ( est une clé primaire dans STATUS)
maintenant j'ai la table fils ou fille UTILISATEUR
/** Ajoute un utilisateur dans la base de donnée */
public void ajouterUtilisateur(String pNom, String pPrenom){
try{
//POUR AJOUTER UN UTILISATEUR
String nom = donnee.genererNom(pNom);
String prenom = donnee.genererPrenom(pPrenom);
String pMotDePasse = tableDonnee.tabPrenom[tableDonnee.nbPrenom];
String resultatStatus = "";
String query = "SELECT * FROM STATUS " ;
ResultSet rss = executerRequete(query);
for( int i=1; i < (int) (Math.random() * 3); i++){
resultatStatus = rss.getString("type_STATUS") ;
rss.next();
}
String queryInsert = "INSERT INTO UTILISATEUR VALUES ( '" + nom + "', '" + prenom + "', '" + pMotDePasse + "', '" + resultatStatus + "')";
System.out.println("(INSERT) NB ligne affectés : "+ executerUpdate(queryInsert));
}
catch(Exception e)
{
e.printStackTrace();
}
}
AFFICHE : Cannot add or update a child row: a foreign key constraint fails (`test`.`utilisateur`, CONSTRAINT `utilisateur_ibfk_1` FOREIGN KEY (`type_STATUS`) REFERENCES `status` (`type_STATUS`))
type_STATUS est une clé étrangére dans UTILISATEUR
est ce que cette syntaxe INSERT INTO UTILISATEUR VALUES est bonne pour inserer une clé etrangére.
je vous remercie de vos réponse. a+
Bonjour,
Ben...
Cela dit clairement que ce n'est pas un problème de syntaxe, mais un problème de clé étrangère : la valeur que vous assignez à type_STATUS n'existe pas dans la table status.
Manu
Ben...
Cannot add or update a child row: a foreign key constraint fails
Cela dit clairement que ce n'est pas un problème de syntaxe, mais un problème de clé étrangère : la valeur que vous assignez à type_STATUS n'existe pas dans la table status.
Manu
sultan173
Messages postés
5
Date d'inscription
dimanche 16 septembre 2007
Statut
Membre
Dernière intervention
24 novembre 2007
24 nov. 2007 à 05:29
24 nov. 2007 à 05:29
Salut manu bé siiiiiiiii
Dans ma table STATUS j'ai inseré mes 3 type_status (autres, étudiants, enseignant)
lit bien mon code je lé ait insérer.
ensuite dans la méthose utilisateur
je fais un String query = "SELECT * FROM STATUS " ;
ResultSet rss = executerRequete(query);
mais c vrai que il bugg à cette ligne ResultSet rss = executerRequete(query); donc COMMENT FAIRE !!!!!!!
encore merci à+
Dans ma table STATUS j'ai inseré mes 3 type_status (autres, étudiants, enseignant)
lit bien mon code je lé ait insérer.
ensuite dans la méthose utilisateur
je fais un String query = "SELECT * FROM STATUS " ;
ResultSet rss = executerRequete(query);
mais c vrai que il bugg à cette ligne ResultSet rss = executerRequete(query); donc COMMENT FAIRE !!!!!!!
encore merci à+