Aller au contenu

Cannot add or update a child row: a foreign key constraint fails


syrine01

Sujets conseillés

j'ai un petit souci avec cette erreur ! Cela fait 4h que je cherche sur le net mais je ne trouve rien qui me permet de résoudre le problème pour les 2 tables.

lorsque j'insère une une demande de congé ou d'absence dans la table demande ili affiche cet erreur :
Cannot add or update a child row: a foreign key constraint fails (`grh`.`demandes`, CONSTRAINT `hyht` FOREIGN KEY (`id_demande`) REFERENCES `login` (`id_login`) ON DELETE CASCADE ON UPDATE CASCADE)



Voici mes requêtes de création de table employées:


CREATE TABLE IF NOT EXISTS `employees` (
`id_employe` int(11) NOT NULL,
`nom` varchar(20) NOT NULL,
`prenom` varchar(20) NOT NULL,
`CIN` int(10) NOT NULL,
`tel` int(10) NOT NULL,
`etatcivil` varchar(20) NOT NULL,
`dateN` date NOT NULL,
`sexe` varchar(20) NOT NULL,
`situation` varchar(20) NOT NULL,
`nbreenfants` int(5) NOT NULL,
`adresse` varchar(20) NOT NULL,
`ville` varchar(20) NOT NULL,
`email` varchar(20) NOT NULL,
PRIMARY KEY (`id_employe`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Voici le code de la création de table demande:



CREATE TABLE IF NOT EXISTS `demandes` (
`id` int(11) NOT NULL,
`id_demande` int(11) NOT NULL,
`nom` varchar(20) NOT NULL,
`prenom` varchar(20) NOT NULL,
`departement` varchar(20) NOT NULL,
`cause` varchar(20) NOT NULL,
`datedebut` date NOT NULL,
`datefin` date NOT NULL,
`nbrejours` int(11) NOT NULL,
`type` varchar(20) NOT NULL,
`statut` text NOT NULL,
PRIMARY KEY (`id`),
KEY `id_demande` (`id_demande`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='stocke les demandes des congés et d’absences ';



Quelqu'un a t il une idée ?


Je n'ai pas l'impression que mes contraintes soient mauvaises !


Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

oui c'est vrai pour la table "employees" je n'ajoute pas de clé étrangére car j'ai pas le besoin

mais pour la table "demande " j'ai ajouter une clé etrangére voila ici

2459221612.png

est ce que il faut modifier manuellement !!!

Modifié par syrine01
Lien vers le commentaire
Partager sur d’autres sites

Elle ne me parait pas logique ta clé, pourquoi as tu liés id_demande à id_login? normalement la clé étrangère représente le même élément dans des tables différentes.



Ton message d'erreur est lié au fait que mysql ne trouve pas d'id_login = id_demande


Lien vers le commentaire
Partager sur d’autres sites

Pour une logique convenable il aurait été préférable de nommer le champs id_demande en id_login.



Par contre l'erreur sera toujours la, puisque mysql ne trouve pas l'id_login correspondant


Lien vers le commentaire
Partager sur d’autres sites

Non ce n'est pas ça que je veux dire.



Le problème, je te l'ai dit 2 fois déjà, quand tu fais ton insertion, il faut absolument que tu renseignes la valeur d'id_demande et que celle-ci soit égale à une valeur de id_login présente dans la table login


Lien vers le commentaire
Partager sur d’autres sites

comment je peux faire ça en SQL "il faut absolument que tu renseignes la valeur d'id_demande et que celle-ci soit égale à une valeur de id_login présente dans la table login"



est ce que ce doit initialiser le id_demande et id_login NULL !!


Modifié par syrine01
Lien vers le commentaire
Partager sur d’autres sites

Que n'arrives tu pas a comprendre dans cette phrase, elle est pourtant simple non?





quand tu fais ton insertion, il faut absolument que tu renseignes la valeur d'id_demande et que celle-ci soit égale à une valeur de id_login présente dans la table login





A aucun moment je ne parle de valeur NULL, je te parle d'une valeur existante dans la table login


Lien vers le commentaire
Partager sur d’autres sites

oui merci bcp j'ai résoudre le problème de cette erreur mais lorsque le méme utilisateur faire une autre demande il affiche ce msg :" Duplicate entry '1' for key 'PRIMARY'"



et la demande ne sera pas stockée dans bd ,



plz comment j’évite ce probléme merci


Lien vers le commentaire
Partager sur d’autres sites

oui merci j'ai corrigé ce probléme :)


mais le id_demande me prend pas les valeurs de l'id_login automatiquement !


car toujours il affiche la meme valeur dans la colonne de id_demande par exemple toujours 1


mais c'est pas ça mon besoin , j'ai que l'id_demande pour chaque utilisateur est unique par exemple: un utilisateur de l'id_login =1 fait sa demande , elle est stockée dans la table demande avec id_demande =1 et un autre utilisateur de l'id_login =2 fait sa demande , elle est stockée dans la table demande avec id_demande =2



comment faire corrigé ce probléme!!


Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...