Problème mysql et la liaison entre des tables

Résolu/Fermé
Sh1v3r - 10 nov. 2005 à 21:31
 hassan_avm - 4 avril 2008 à 19:26
Bonjour,

Voilà j'ai un petit soucis avec MySQL et la création de mes tables. J'utilise PHPAdmin 1.8.0.1 et je n'arrive pas à appliquer des clés secondaires (ou clés étrangères) dans MySQL.

Voici le code SQL de la création de mes tables:

*******************************************************************************-- Création de la base
-- ___________________ 

-- CREATE DATABASE `InfoSID` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci;

-- Création des tables
-- ___________________

create table LINK (
Idli bigint not null,
Ncli bigint not null,
Dcli date not null,
Constraint PK_T_LINK primary key (Idli) 
);

create table SEND (
Dae date not null
);

create table LETTER (
Idl bigint not null,
Nol char(50) not null,
Constraint PK_T_LETTRE primary key (Idl) 
);

create table USER (
Idu bigint not null,
Psu char(50) not null,
Mpu char(25) not null,
Emu char(25) not null,
Stu char not null,
Nou char(50) not null,
Pru char(50) not null,
Agu char(255) not null,
Pau char(50) not null,
Deu char(50) null,
Viu char(50) null,
Dcu date not null,
Constraint PK_T_USER primary key (Idu) 
);

-- Application des clés secondaire
--__________________________

alter table SEND 
add
FK_T_USER foreign key (Idu)
REFERENCES USER(Idu)
go

alter table SEND 
add
FK_T_LETTER foreign key (Idl)
REFERENCES LETTER(Idl)
go

alter table LINK 
add
FK_T_LINK foreign key (Idl)
REFERENCES LETTRE(Idl)
go

*******************************************************************************

Jusqu'à :"Application des clés secondaires", il n'y a aucune erreur, par contre au delà MySQL m'affiche cela:
********************************************************************************
MySQL a répondu: 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'foreign key (Idu)
REFERENCES USER(Idu)
go

alter table SEND 
*******************************************************************************


Auriez-vous une suggestion? Car je suis un peu perdu, il y a une erreur de syntaxe mais je ne vois pas laquelle. J'ai beau avoir cherché dans l'aide de MySQL, j'ai rien trouvé ou je n'est pas compris, car j'ai essayer de recopier ligne par ligne les différents exemple de l'aide mais cela n'a rien données du coup j'ai laissé mon code comme il est.

Merci de me venir en aide s'il vous plait.

3 réponses

wiwimagique Messages postés 481 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 20 avril 2006 108
10 nov. 2005 à 21:57
Attention, à ma connaissance, les tables du type MyIsam (ou un truc comme ça :-p) de mySql ne gèrent pas les clefs étrangères.

0
Ok, mais alors dans ce cas comment puis-je relier mes tables entre elles? Car j'ai toujours utiliser cette méthode pour relier mes tables.

Comment puis-je faire avec MySQL?
0
wiwimagique Messages postés 481 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 20 avril 2006 108
11 nov. 2005 à 10:33
Ce que je fais, j'utilises simplement des index.
Les tables ne sont pas reliés (pas de vérification d'intégrité des données)
mais la recherche se fait tout aussi rapidement.
0
Pour cela il faut utiliser le moteur innoDB au lieu de myISAM

http://dev.mysql.com/doc/refman/5.0/en/innodb.html
0