[SQL] Erreur SQL

Fermé
Ju - 19 janv. 2006 à 10:41
fifouta Messages postés 12 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2012 - 2 nov. 2008 à 11:44
bonjour a tous,

je voudrais savoir quels sont les causes et comment remédier a ce message d'erreur :

Impossible d'ajouter un enregistrement fils : une constrainte externe l'empèche

Merci d'avance
bonne journée

3 réponses

Je vais apporter plus de précisions vu la bousculade pour m'aider lol
Cette erreur est générée a l'issue de cette requete:

INSERT INTO concerner(NumSupp, NumSign, DateDebut, DateFin, DateRupt, TypeC, TxMensr, Com, BH)VALUES('1-801V','','12/09/2005','11/09/2006','','CAE','30%','','20h')

NumSupp et NumSign sont des clés érangères et ma base de données est en InnoDB
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
19 janv. 2006 à 15:41
Salut,
Ta clé étrangère numSign elle parait avoir une valeur bizarre pour une clé
étrangère : ''
A+, crabs
0
Ju > crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008
19 janv. 2006 à 15:53
Oui en fait je ne lui affecte pas de valeur car elle est auto-incrémentée
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507 > crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008
19 janv. 2006 à 16:19
Là, je comprends plus le principe, je croyais qu'une clé étrangère devait exister
dans la table dont elle est la clé primaire avant de pouvoir être ajoutée dans une
ligne d'une table dans laquelle elle représente une relation.
Donc pour moi, impossible d'avoir une clé étrangère en auto_increment dans
une table relation.
A+, crabs
0
Je vais essayer d'être maintenant plus général, sa vous motivera peut etre un peu plus pour m'aider! lol

Voila ma question : Comment fait-on pour générer des clés étrangères sous mySQL sous le format innoDB ?
J'ai lu qu'il fallait créer les INDEX nécessaires au préalable, pouvez-vous m'en dire plus?
0
fifouta Messages postés 12 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2012
2 nov. 2008 à 11:44
bonjour,

je vais donner un exemple en m'inspirant de mon propre projet :

la création de mes tables se fait via un scrpit php :

$link = "
CREATE TABLE `hd_utilisateur` (
  `id_user` int(11) NOT NULL auto_increment PRIMARY KEY,
  `nom` text NOT NULL,
  `prenom` text NOT NULL,
  `email` varchar(255) NOT NULL,
  `username` varchar(16) NOT NULL,
  `passwd` varchar(50) NOT NULL,
  `telephone` varchar(50) NOT NULL,
  `user_mobile` varchar(50) NOT NULL,
  `poste_interne` varchar(50) NOT NULL,
  `fax` varchar(50) NOT NULL,
  `adresse` varchar(200) NOT NULL,
  `profession` text NOT NULL,
  `operateur_helpdesk` text NOT NULL,
  `fk_division` int(11),
   FOREIGN KEY(fk_division) REFERENCES hd_division(id_division) ON DELETE CASCADE ON UPDATE CASCADE,
   INDEX(fk_division),
   INDEX(id_user)    
  
)TYPE=INNODB;"; 
  
$res = mysql_query($link) or die(mysql_error());


$link = "
CREATE TABLE `hd_type_incident` (
  `id_type_incident` int(11) NOT NULL auto_increment PRIMARY KEY,
  `type_incident` text NOT NULL, 
  `description` varchar(200) NOT NULL,
  `fk_user` int(11),
   FOREIGN KEY(fk_user) REFERENCES hd_utilisateur(id_user) ON DELETE CASCADE ON UPDATE CASCADE,
   INDEX(fk_user)
)TYPE=INNODB;";  

$res = mysql_query($link) or die(mysql_error());





chaque type d'incident est affecté à un utilisateur spécifique , il faut d'abord créer la table hd_utilisateur ensuite la table hd-type_incident , le type INNODB est trés susceptible aux relations.

en effet on crée les index sur les clés étrangères .

mo message arrive en retard mais j'espère que ça va aider certains d'entre vous ;)

cordialement
0