[SQL] clés étrangères

Résolu
azerty0 Messages postés 1274 Date d'inscription   Statut Membre Dernière intervention   -  
azerty0 Messages postés 1274 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   31
 
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   Statut Membre Dernière intervention   75
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   75
 
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   Statut Membre Dernière intervention   31
 
+1, ça marche aussi chez moi.
0
azerty0 Messages postés 1274 Date d'inscription   Statut Membre Dernière intervention   75
 
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   Statut Membre Dernière intervention   31
 
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   Statut Membre Dernière intervention   75
 
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   Statut Membre Dernière intervention   31
 
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   Statut Membre Dernière intervention   75
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   31
 
Oui, c'est une bonne idée.
0