Salve,
ho Winxp e ho installato
Apache(ver. 1.3.27) + Php 4(ver. 4.2.3)
+ Mysql(ver. 4.0.15) + PhpMyAdmin(ver. 2.5.3).
Quando eseguo la seguente query in phpmyadmin
CREATE TABLE `tipologia` (
`codice` set('A','B','C','D','E') NOT NULL default '',
`descrizione` varchar(50) default NULL,
PRIMARY KEY (`codice`)
) TYPE=InnoDB;
CREATE TABLE `paziente` (
`codicefiscale` varchar(16) NOT NULL default '',
`nome` varchar(20) NOT NULL default '',
`cognome` varchar(20) NOT NULL default '',
`eta` smallint(1) unsigned default NULL,
`indirizzo` varchar(50) NOT NULL default '',
`telefono` varchar(15) default NULL,
`codicetipologia` set('A','B','C','D','E') NOT NULL default '',
PRIMARY KEY (`codicefiscale`),
FOREIGN KEY (`codicetipologia`) REFERENCES `tipologia` (`codice`) ON DELETE CASCADE ON UPDATE CASCADE
) TYPE=InnoDB;
phpmyadmin mi restituisce questo messaggio di errore:
Errore
query SQL :
CREATE TABLE `paziente` (
`codicefiscale` varchar( 16 ) NOT NULL default '',
`nome` varchar( 20 ) NOT NULL default '',
`cognome` varchar( 20 ) NOT NULL default '',
`eta` smallint( 1 ) unsigned default NULL ,
`indirizzo` varchar( 50 ) NOT NULL default '',
`telefono` varchar( 15 ) default NULL ,
`codicetipologia` set( 'A', 'B', 'C', 'D', 'E' ) NOT NULL default '',
PRIMARY KEY ( `codicefiscale` ) ,
FOREIGN KEY ( `codicetipologia` ) REFERENCES `tipologia` ( `codice` ) ON DELETE CASCADE ON UPDATE CASCADE
) TYPE = InnoDB
Messaggio di MySQL:
#1005 - Can't create table '.\ttt\paziente.frm' (errno: 150)
Se non metto la riga "FOREIGN KEY ( `codicetipologia` ) REFERENCES `tipologia` ( `codice` ) ON DELETE CASCADE ON UPDATE CASCADE"
tutto funziona bene.
Perchè mi da quel messaggio dal momento che la tabella referenziata è stata già dichiarata prima?