MySQL et clé etrangère

Signaler
Messages postés
7
Date d'inscription
jeudi 8 novembre 2007
Statut
Membre
Dernière intervention
14 mars 2008
-
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
-
J'ai trois tables : Personnel, Materiel, Maintenir que j'ai créé dans Easy-Php 1.8, voici un enregistrement du
Personnel :  Id_Personnel = 12345
                  Code_Personnel = 12345
                  Nom_Personnel = Abraham
Materiel : Id_Materiel = 54321
               Code_Materiel = 54321
               Nom_Materiel = UNITE CENTRALE
Maintenir : Id_Maintenir = à faire
                 Id_Personnel = à faire
                 Id_Materiel = à faire
J'utilise Delphi 7 et j'ai comme réponse : Impossible d'ajouter un enregistrement fils : une constrainte externe l'empèche. Car Id_Personnel et Id_Materiel proviennent des tables respectivement Personnel et Maintenir par le code de création suivante :

alter table MAINTENIR add constraint FK_MAINTENIR foreign key (ID_PERSONNEL)
references PERSONNEL (ID_PERSONNEL) on delete restrict on update restrict;

alter table MAINTENIR add constraint FK_MAINTENIR2 foreign key (ID_MATERIEL)
references MATERIEL (ID_MATERIEL) on delete restrict on update restrict;

Merci de votre aide

                  

3 réponses

Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
...et c'est quoi la requete exacte qui provoque l'erreur ?
Messages postés
7
Date d'inscription
jeudi 8 novembre 2007
Statut
Membre
Dernière intervention
14 mars 2008

INSERT
INTO maintenir
  (ID_PERSONNEL, ID_MATERIEL, ID_MAINTENIR)
VALUES  ("12345", "54321", "6789")
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
!!!!!
tes champs "ID_XXX" sont de type chaine?!!!!
si ce n'est pas le cas, ta requete doit etre

INSERTINTO maintenir
  (ID_PERSONNEL, ID_MATERIEL, ID_MAINTENIR)
VALUES  (12345, 54321, 6789)

sinon, tu peux faire un insert de ce genre pour verifier que tes enregistrements existent bien dans les autres tables :

INSERTINTO maintenir
  (ID_PERSONNEL, ID_MATERIEL, ID_MAINTENIR)
SELECT  (p.id_personnel, m.id_materiel, 6789) from personnel p, materiel m where (p.id_personnel=12345) and (m.id_materiel=54321);