Aller au contenu

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


Sujets conseillés

Posté
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

Posté (modifié)

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
Posté

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


Posté

j'ai liée le id_demande avec id_login car j'ai besoin d'affiche cette demande pour employe selon id_login c'est a dire on va affiché la demande d'employé de id_login =2



comment je peux le corrigé et merci ;)


Posté

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


Posté

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


Posté

merci pour votre réponse mais comment je corrige ce probléme!!


car j'ai besion de cette clé étrangére pour afficher la demande pour chaque employé selon le id_login


plz aider moi et encore mercii


Posté (modifié)

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
Posté

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


Posté

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


Posté

C'est ton champs id qui doit s’incrémenter, il est courant de mettre les clés primaires en auto_increment


Posté

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!!


Veuillez vous connecter pour commenter

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



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