[SQL] clés étrangères

Résolu/Fermé
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 - 28 juin 2010 à 15:21
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 - 28 juin 2010 à 17:19
Bonjour,

J'ai un problème dans la déclaration de mes clés étrangères, impossible de trouver ce qui ne fonctionne pas :

	CREATE TABLE 'entree' (
	  'ent_id' int(10) unsigned NOT NULL auto_increment,
	  'ent_id_date' date NOT NULL,
	  CONSTRAINT pk_entree PRIMARY KEY ('ent_id'),
	  CONSTRAINT fk_entree_date FOREIGN KEY (ent_id_date) REFERENCES date (id_date) ON DELETE CASCADE
	) ENGINE =InnoDB  DEFAULT CHARSET=utf8 ;


Vous voyez quelque chose qui cloche ?

Merci d'avance,

Az
A voir également:

5 réponses

gaetan753 Messages postés 108 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 6 mai 2013 31
28 juin 2010 à 15:23
bonjour,
ton ent_id_date n'est pas entre ' '

CONSTRAINT fk_entree_date FOREIGN KEY (ent_id_date)
1
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
Modifié par azerty0 le 28/06/2010 à 16:20
J'ai essayé, ca n'a rien changé, j'allais le poster, les deux tables avec une modif, je m'étais planté sur la clé étrangère (donc les types ne correspondaient pas, mais cela ne change rien)

 DROP TABLE IF EXISTS 'date'; 
 CREATE TABLE 'date' ( 
   'id_date' int(10) unsigned NOT NULL auto_increment', 
   'formate' date NOT NULL, 
   'jour' varchar(8) default NULL, 
   CONSTRAINT pk_date PRIMARY KEY ('id_date') 
 ) ENGINE =InnoDB  DEFAULT CHARSET=utf8 ; 

 DROP TABLE IF EXISTS 'entree'; 
 CREATE TABLE 'entree' ( 
   'ent_id' int(10) unsigned NOT NULL auto_increment, 
   'ent_id_date' date NOT NULL , 
   'ent_heure_deb' int(2) NOT NULL, 
   'ent_heure_fin' int(2) NOT NULL, 
   CONSTRAINT pk_entree PRIMARY KEY ('ent_id'), 
   INDEX date_ind ('ent_id_date'), 
   CONSTRAINT fk_entree_date FOREIGN KEY ('ent_id_date') REFERENCES 'date' ('formate') ON DELETE CASCADE 
 ) ENGINE =InnoDB  DEFAULT CHARSET=utf8 ;


Merci :)
1
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
Modifié par atout1 le 28/06/2010 à 16:43
si tu utilise PhpMyAdmin
vérifie si tas bien défini le champ format dans la table date comme index ?

car ça marche chez moi j'ai réussi à définir la clé etrangère ent_id_date qui comme référence le champ formate dans la table date
0
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
28 juin 2010 à 16:50
Merci beaucoup, ca a fonctionné ! J'ignorais qu'il fallait déclaré l'autre champ en index... !!!

Faut-il que je laisse la clé étrangère ent_id_date en index dans la table entree ?
0
gaetan753 Messages postés 108 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 6 mai 2013 31
28 juin 2010 à 16:51
+1, ça marche aussi chez moi.
0
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
28 juin 2010 à 17:04
J'ai donc rajouté dans table :

INDEX formate_ind ('formate')

Mais maintenant, une autre erreur parvient : Il n'arrive pas a supprimer la table date et pour cause :

#1217 - Impossible de supprimer un enregistrement père : une constrainte externe l'empèche 

et pourtant, avec la syntaxe de entree avant ou apres date...
0
gaetan753 Messages postés 108 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 6 mai 2013 31
28 juin 2010 à 17:08
fait des update table si tu peux pas les supprimer. enlève d'abord les contraintes, et supprime les tables.
0
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
28 juin 2010 à 15:29
Merci !!! il y en avant effectivement besoin !

Maintenant, il me dit ca :
#1005 - Ne peut créer la table './osipe/enreg.frm' (Errcode: 150) 


Une idée ? ...
0
gaetan753 Messages postés 108 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 6 mai 2013 31
28 juin 2010 à 15:43
est-ce que tes 2 dates sont bien au même format ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
28 juin 2010 à 15:57
Effectivement, mais PhPMyAdmin me met en rouge et en majuscule le mot date dans :
 REFERENCES date ('id_date') ON DELETE CASCADE


Est-ce que ca peut être du fait que le nom de ma table soit un type ?
0
atout1 Messages postés 216 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 17 juin 2011
Modifié par atout1 le 28/06/2010 à 16:05
salut,
essaye de changer le nom du table et voir cé ki te donne comme résultat ?
mais normalement cé pas ca le pb

tu peux nous donne la requete de la création des deux tables ??
0
gaetan753 Messages postés 108 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 6 mai 2013 31
28 juin 2010 à 16:04
Oui, c'est une bonne idée.
0