PDA

View Full Version : [MySQL] Problema chiavi esterne


andrethef
29-06-2012, 09:20
Ciao a tutti. Devo creare in MySQL delle tabelle con i vincoli di integrità referenziale tramite le clausole foreign key.
Creo senza problemi la prima tabella

CREATE TABLE tipo
(Marca varchar (20) NOT NULL,
Modello varchar (10) NOT NULL,
Costo_Orario varchar (15) NOT NULL,
Costo_Sett varchar (15) NOT NULL,
Costo_GG varchar (15) NOT NULL,
PRIMARY KEY (Marca, Modello) );

Mentra nella tabella dove vado ad esplicitare la chiave esterna, non me la crea e mi dà errore sulle chiavi esterne:

CREATE TABLE furgone
(Targa varchar (10) NOT NULL,
Marca varchar (20) NOT NULL,
Modello varchar (10) NOT NULL,
Data_Imm varchar (25) NOT NULL,
NPosti smallint (2) NOT NULL,
mCubi smallint (5) NOT NULL,
PRIMARY KEY (Targa),
FOREIGN KEY (Marca) REFERENCES tipo (Marca),
FOREIGN KEY (Modello) REFERENCES tipo (Modello));

Qualcuno ha qualche idea? Ho provato a mettere ENGINE=InnoDB per entrambe le tabelle, ma non cambia nulla

Julianz
05-07-2012, 23:43
Ciao, innanzitutto devi mettere InnoDB come motore, altrimenti non funzionerà in nessun caso.

Prova a scrivere così:

FOREIGN KEY (fk_marca_modello) REFERENCES tipo (Marca, Modello)

Non sono espertissimo di MySQL in quanto lavoro su altri DB, però se hai una chiave primaria formata da due colonne le foreign key devono essere dichiarate a due colonne, altrimenti rischieresti di violare il vincolo di univocità sulle tabelle figlie. :)