Forum Clubic

Probleme jointure phpmyadmin

Bonjour, j’ai un probleme sur phpmyadmin (EasyPhp) car je n’arrive pas a créer une table relié à une autre avec une clé étrangère. Voici le code :
CREATE TABLE Espece (
idEspece INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
idGenre INT NOT NULL CONSTRAINT fk_genre_fk REFERENCES Genre(idGenre),
NomEspece VARCHAR( 255 ) NOT NULL ,
Generalite LONGTEXT NOT NULL ,
Toxique BOOL NOT NULL ,
Pathogene BOOL NOT NULL ,
Biochimie LONGTEXT NOT NULL ,
Biologie LONGTEXT NOT NULL
) ENGINE = MYISAM ;

Il me dit qu’il y a une erreur à la 3eme ligne. Merci.

Salut,

Tu n’as pas besoin de déclarer les clés étrangères:
Lors d’une jointure de ta table ‘Espece’, si la première condition de jointure utilise un index de ta table ‘Espece’ cet index sera considéré comme la clé étrangère.

Normal. MyISAM ne gère pas les clefs étrangères ni l’intégrité référentielle (cf doc)

  1. Change ENGINE=MYISAM pour INNODB
  2. Crée tes clefs étrangères par un ALTER TABLE une fois que toutes tes tables sont crées. Cela t’évitera quelques problèmes de type “l’oeuf et la poule”

kiki: les clefs étrangères ça sert surtout à valider l’intégrité référentielle, histoire de ne pas faire de références vers des données qui n’existent pas ou plus. C’est un des principaux mécanismes des BDD Relationnel.

Salut merci pour les réponses, cependant je ne suis pas très fort en sql.
Est-que tu pourrais me passer la syntaxe avec ALTER, pour éviter ce problème de “l’oeuf et la poule” par exemple avec mes table Genre et Espece. Merci.

il me donne sa :

Erreur
requête SQL:

CREATE TABLE Espece (

idEspece INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
idGenre INT NOT NULL CONSTRAINT fk_genre_fk REFERENCES Genre ( idGenre ) ,
NomEspece VARCHAR( 255 ) NOT NULL ,
Generalite LONGTEXT NOT NULL ,
Toxique BOOL NOT NULL ,
Pathogene BOOL NOT NULL ,
Biochimie LONGTEXT NOT NULL ,
Biologie LONGTEXT NOT NULL
) ENGINE = INNODB

MySQL a répondu:

#1064 - Erreur de syntaxe près de ‘CONSTRAINT fk_genre_fk REFERENCES Genre(idGenre),
`NomEsp’ à la ligne 3

Fait toi plaisir :

dev.mysql.com…

Merci sa marche.