Création d'une table avec foreign key.
Bonjour!
J'ai une table disques:
Code:
1 2 3 4 5 6 7 8 9 10
|
CREATE table disques
(codDisque integer not null unique,
titre varchar(40) not null,
nomeCh varchar(25) not null,
dateL varchar(7) not null,
editeur varchar(15) not null,
nCds integer not null,
prix real not null,
primary key(codDisque)); |
et une autre table clients:
Code:
1 2 3 4 5 6 7 8
|
CREATE table clients
(codClients integer not null unique,
nomCl varchar(25) not null,
adresseCl varchar(35),
telephoneCl varchar(9),
emailCl varchar(35),
primary key(codClient)); |
J'ai une table qui fait la liaison entre Disques et Clients, la table Achetent qui j'ai défini comme ça:
Code:
1 2 3 4 5 6 7 8
|
CREATE table achetent
(titre varchar(40) not null,
codClient integer not null,
dateAchat varchar(10) not null,
primary key(titre, codClient),
foreign key(titulo) references disques,
foreign key(codClient) references clients); |
Mais quand je fait ça il m'est dit que on ne peut pas créer la table menagerie\achetent.frm (errno:150).
Je ne comprend pas où c'est l'erreur...
Merci d'avance!
Re: [Débutant] Création d'une table avec foreign key.
C'est plutôt ça:
Code:
1 2 3 4 5 6 7
| CREATE table achetent
(codDisque integer not null,
codClient integer not null,
dateAchat varchar(10) not null,
CONSTRAINT pk_achetent PRIMARY KEY (codDisque, codClient),
CONSTRAINT fk_codDisque FOREIGN KEY (codDisque) REFERENCES disques(codDisque),
CONSTRAINT fk_codClient FOREIGN KEY (codClient) REFERENCES clients(codClient)); |
En plus j'ai nommé tes contraintes PRIMARY/FOREIGN KEY.
Sinon, est-ce que ta bas est en InnoDB? Parce que si elle est en MyISAM (par défaut), les contraintes de clef étrangères ne sont pas gérées.