Problème clé étrangère

Résolu
Bonjour,
j'ai un petit souci avec ma clé étrangère

Je suis sous PHPMyAdmin avec WAMP

Je possède 3 tables, demandeur, utilisateur et service

Dans demandeur et utilisateur, j'ai en clé étrangère le code_service

Sous demandeur, la clé étrangère fonctionne parfaitement

Mais sous utilisateur, lorsque je veux relier ma clé étrangère à la clé primaire de service, voila l'erreur :

Erreur

Requête SQL:

ALTER TABLE 'utilisateur' ADD FOREIGN KEY ( 'fkUT_codeSE' ) REFERENCES 'tdb'.'service' (
'code_se'
) ON DELETE CASCADE ON UPDATE CASCADE ;

MySQL a répondu: Documentation
#1452 - Cannot add or update a child row: a foreign key constraint fails ('tdb'.<result 2 when explaining filename '#sql-1c4_74'>, CONSTRAINT '#sql-1c4_74_ibfk_1' FOREIGN KEY ('fkUT_codeSE') REFERENCES 'service' ('code_se') ON DELETE CASCADE ON UPDATE CASCADE)

J'aurais besoin d'un petit coup de main si possible, merci de votre attention !!

Bonne journée

4 réponses

Résumé de la discussion

Un problème de clé étrangère empêche d'associer la colonne fkUT_codeSE de la table utilisateur à la clé primaire code_se de la table service, dans le cadre d'une configuration PHPMyAdmin sous WAMP. Les échanges évoquent des erreurs comme #1452 Cannot add or update a child row et des soucis de syntaxe #1064 lorsque l'identifiant est cité entre guillemets ou mal formé. Pour corriger, utiliser une syntaxe correcte sans guillemets autour des noms et vérifier que les types int(11) correspondent et que les valeurs existantes dans utilisateur référencent bien service(code_se). En pratique, la contrainte peut être ajoutée si toutes les valeurs de fkUT_codeSE existent déjà dans service et si le moteur est InnoDB; sinon, il faut ajuster les données.

Bobot (l’IA à votre service)
  1. Salut,
    Est-ce que 'code_se' est clé primaire dans la table service ?
    1. Les 3 tables :
      Service : code_se clé primaire, lib_se,comm_se ;
      Demandeur : code_de clé primaire, nom_de, fkDE_codeSE clé étrangère de sercie(code_se) ;
      Utilisateur : code_ut, nom_ut, type_ut, fkUT_codeSE clé étrangère de sercie(code_se) ;

      Autrement dit, les 2 tables utilisateurs et demandeurs sont un copier/coller !
      1. Quel est le type de code_se dans ta table Service et fkUT_codeSE dans ta table utilisateur ? (entier, chaine de caractère ...)
      2. fkUT_codeSE int(11)
        fkDE_codeSE int(11)
        code_se int(11)
      3. Merci pour ton aide en tout cas :)
      4. Y'a pas de quoi :)
        Tes tables sont-elles remplies ?
        Essayes de nous donner un jeu d'essai (j'avais pas sorti ce mot depuis l'école ...)
    2. CREATE TABLE IF NOT EXISTS 'demandeur' (
        'code_de' int(40) NOT NULL AUTO_INCREMENT,
        'nom_de' varchar(40) NOT NULL,
        'fkDE_codeSE' int(11) NOT NULL,
        PRIMARY KEY ('code_de'),
        KEY 'fkDE_codeSE' ('fkDE_codeSE')
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
      
      -- --------------------------------------------------------
      
      --
      -- Structure de la table 'service'
      --
      
      CREATE TABLE IF NOT EXISTS 'service' (
        'code_se' int(11) NOT NULL AUTO_INCREMENT,
        'lib_se' text NOT NULL,
        'des_se' text NOT NULL,
        'dateDeb_se' date NOT NULL,
        'dateFin_se' date NOT NULL,
        PRIMARY KEY ('code_se')
      ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=32 ;
      
      --
      -- Contenu de la table 'service'
      --
      
      INSERT INTO 'service' ('code_se', 'lib_se', 'des_se', 'dateDeb_se', 'dateFin_se') VALUES
      (1, 'DIRCAB', 'Cabinet du recteur', '0000-00-00', '0000-00-00'),
      (2, 'SG', 'Secrétaire général', '0000-00-00', '0000-00-00'),
      (3, 'DIRH', 'Dispositif académique des Ressources humaines', '0000-00-00', '0000-00-00'),
      (4, 'ISST', 'Inspecteur Santé et Sécurité au Travail', '0000-00-00', '0000-00-00'),
      (5, 'SACE', 'Service d''Aide et de Conseil aux Eple', '0000-00-00', '0000-00-00'),
      (6, 'SJC', 'Service Juridique et Contentieux', '0000-00-00', '0000-00-00'),
      (7, 'SPS', 'Service Prospective et Statistique', '0000-00-00', '0000-00-00'),
      (8, 'DOS', 'Division Organisation Scolaire', '0000-00-00', '0000-00-00'),
      (9, 'DIPE', 'Division Personnels Enseignants', '0000-00-00', '0000-00-00'),
      (10, 'PAID', 'Division Personnels Administratif, d''Inspection et de Direction', '0000-00-00', '0000-00-00'),
      (11, 'DISUPP', 'Division de l''Enseignement Supérieur et des Personnels du Privé', '0000-00-00', '0000-00-00'),
      (12, 'DEC', 'Division Examens et concours', '0000-00-00', '0000-00-00'),
      (13, 'DIFOP', 'Division Formation des Personnels', '0000-00-00', '0000-00-00'),
      (14, 'DSI', 'Division Systèmes Information', '0000-00-00', '0000-00-00'),
      (15, 'DMG', 'Division Moyens Généraux', '0000-00-00', '0000-00-00'),
      (16, 'DBF', 'Division Budgétaire et Finance', '0000-00-00', '0000-00-00'),
      (17, 'DAET', 'Délégué Académique aux Enseignements Technologiques', '0000-00-00', '0000-00-00'),
      (18, 'CSAIO', 'Chef Service Académique d''Information et d''Orientation', '0000-00-00', '0000-00-00'),
      (19, 'DAAC', 'Délégué Académique à l''Action culturelle', '0000-00-00', '0000-00-00'),
      (20, 'DAREIC', 'Délégué Académique aux Relations Européennes et Internationales et à la Coopération', '0000-00-00', '0000-00-00'),
      (21, 'DAFOP', 'Délégué Académique à la Formation des Personnels', '0000-00-00', '0000-00-00'),
      (22, 'CAMD', 'Centre Académique Michel Delay', '0000-00-00', '0000-00-00'),
      (23, 'IRE', 'Ingénieur Régional de l''Equipement', '0000-00-00', '0000-00-00'),
      (24, 'CARDIE', 'Coordination Académique Recherche-Développement Innovation et Expérimentation', '0000-00-00', '0000-00-00'),
      (25, 'CTICE', 'Conseiller pour les Tachnologies de l''Information et de la Communication dans l''Enseignement', '0000-00-00', '0000-00-00'),
      (26, 'GIPAL', 'Groupement d''Intérêt Public de l''Académie de Lyon', '0000-00-00', '0000-00-00'),
      (27, 'DAFCO', 'Délégué Académique à la Formation Continue', '0000-00-00', '0000-00-00'),
      (28, 'SANTE', 'Médecins, Infirmières, Assistantes Sociales', '0000-00-00', '0000-00-00'),
      (29, 'IEN ASH', 'Inspecteurs de l''Education Nationale Adaptation colaire et Scolarisation des élèves Handicapés', '0000-00-00', '0000-00-00'),
      (30, 'IEN', 'Inspecteurs de l''Education Nationale', '0000-00-00', '0000-00-00'),
      (31, 'IPR', 'Inspecteurs Pédagogiques Régionaux', '0000-00-00', '0000-00-00');
      
      -- --------------------------------------------------------
      
      --
      -- Structure de la table 'utilisateur'
      --
      
      CREATE TABLE IF NOT EXISTS 'utilisateur' (
        'code_ut' int(40) NOT NULL AUTO_INCREMENT,
        'nom_ut' varchar(40) NOT NULL,
        'type_ut' text NOT NULL,
        'fkUT_codeSE' int(11) NOT NULL,
        PRIMARY KEY ('code_ut'),
        KEY 'fkUT_codeSE' ('fkUT_codeSE')
      ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ;
      
      --
      -- Contenu de la table 'utilisateur'
      --
      
      INSERT INTO 'utilisateur' ('code_ut', 'nom_ut', 'type_ut', 'fkUT_codeSE') VALUES
      (1, 'Directeur d''écoles', '', 0),
      (2, 'Enseignants 1er degré', '', 0),
      (3, 'Enseignants 2nd degré', '', 0),
      (4, 'Personnels de direction des établissemen', '', 0),
      (5, 'Agents comptable, gestionnaires et perso', '', 0),
      (6, 'Personnels administratifs et vie scolair', '', 0),
      (7, 'Personnels de santé/social', '', 0),
      (8, 'Personnels des services informatiques', '', 0),
      (9, 'Encadrement intermédiaire', '', 0),
      (10, 'Direction des services académiques et/ou', '', 0),
      (11, 'Corps d''inspection 1er degré', '', 0),
      (12, 'Corps d''inspection 2nd degré', '', 0),
      (13, 'Personnels d''orientation', '', 0),
      (14, 'Tous les personnels', '', 0),
      (15, 'Personnels administratifs de l''enseignem', '', 0),
      (16, 'Etudiants', '', 0),
      (17, 'Elèves', '', 0),
      (18, 'Autres partenaires', '', 0),
      (19, 'Collectivités territoriales', '', 0),
      (20, 'Parents', '', 0);
      
      --
      -- Contraintes pour les tables exportées
      --
      
      --
      -- Contraintes pour la table 'demandeur'
      --
      ALTER TABLE 'demandeur'
        ADD CONSTRAINT 'demandeur_ibfk_1' FOREIGN KEY ('fkDE_codeSE') REFERENCES 'service' ('code_se');
      1. Et la table demandeur ?
      2. aucun tuples, elle n'est encore pas renseignée
      3. Ah bhé euh rempli la pour essayer, peut être que ca vient de la ;)
      4. Cela serait illogique non, vu que c'est justement la table dans laquelle la clé étrangère fonctionne ...

        Je vais essayer d'y insérer un tuple, voir si c'est possible
      5. je viens d'y insérer 2 tuples, avec leur clé étrangère ( code_se ) renseignée, et tout a marché sur Demandeur

    Discussions similaires

    cle wifi pour tv

    5 réponses