Varias FOREIGN KEYS en una tabla
Buenas, estoy peleandome con las claves for谩neas, ajenas o como ustedes las llamen y consigo que las tablas con una s贸la FOREIGN KEY me funcionen, pero el problema me surge cuando son dos las FOREIGN KEY que intento introducir en las tablas. El error que me da es: "ERROR 1005 at line 3: Can`t create table '.BBDDtabla.frm (errno: 150).
La sintaxis de la tabla es:
CREATE TABLE `Productos` (
`Identificador` VARCHAR( 10 ) NOT NULL ,
`Nombre` VARCHAR( 100 ) NOT NULL ,
`Descripcion` TEXT NOT NULL ,
`Num_Seccion` TINYINT( 2 ) UNSIGNED NOT NULL ,
`Num_Subseccion` TINYINT( 2 ) UNSIGNED NOT NULL ,
`Precio` DECIMAL( 10,2 ) NOT NULL ,
`Foto` VARCHAR( 50 ) NULL ,
`Stock` INT( 3 ) NOT NULL ,
`e-mail_proveedor` VARCHAR( 50 ) NOT NULL ,
`ProductoDia` ENUM("Y","N") NOT NULL,
PRIMARY KEY ( `Identificador` ),
INDEX (Num_Seccion),
INDEX (Num_Subseccion),
FOREIGN KEY (Num_Seccion) REFERENCES `Seccion`(Num_Seccion)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (Num_Subseccion) REFERENCES `subseccion`(Num_Subseccion)
ON DELETE CASCADE ON UPDATE CASCADE
)TYPE = INNODB ;
existiendo antes de introducir esta tabla todas a las que hace referencia.
Si podeis ayudarme os lo agradecer铆a porque ha probado veinte mil formas pero no lo consigo.
Tal vez pueda ser un error en el archivo de configuraci贸n pero por lo manuales que he mirado no lo creo, aunque todo es posible.
De nuevo, gracias.
La sintaxis de la tabla es:
CREATE TABLE `Productos` (
`Identificador` VARCHAR( 10 ) NOT NULL ,
`Nombre` VARCHAR( 100 ) NOT NULL ,
`Descripcion` TEXT NOT NULL ,
`Num_Seccion` TINYINT( 2 ) UNSIGNED NOT NULL ,
`Num_Subseccion` TINYINT( 2 ) UNSIGNED NOT NULL ,
`Precio` DECIMAL( 10,2 ) NOT NULL ,
`Foto` VARCHAR( 50 ) NULL ,
`Stock` INT( 3 ) NOT NULL ,
`e-mail_proveedor` VARCHAR( 50 ) NOT NULL ,
`ProductoDia` ENUM("Y","N") NOT NULL,
PRIMARY KEY ( `Identificador` ),
INDEX (Num_Seccion),
INDEX (Num_Subseccion),
FOREIGN KEY (Num_Seccion) REFERENCES `Seccion`(Num_Seccion)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (Num_Subseccion) REFERENCES `subseccion`(Num_Subseccion)
ON DELETE CASCADE ON UPDATE CASCADE
)TYPE = INNODB ;
existiendo antes de introducir esta tabla todas a las que hace referencia.
Si podeis ayudarme os lo agradecer铆a porque ha probado veinte mil formas pero no lo consigo.
Tal vez pueda ser un error en el archivo de configuraci贸n pero por lo manuales que he mirado no lo creo, aunque todo es posible.
De nuevo, gracias.
Yo utilizo MySQL ver 4.0.x no recuerdo cual es en este momento y tengo una tabla con dos claves foraneas y no me da problema el script que tengo es es siguiente
CREATE TABLE Productos (
PK_Producto VARCHAR(20) NOT NULL,
Marcas_idMarcas VARCHAR(20) NOT NULL,
Categorias_idCategorias VARCHAR(30) NOT NULL,
Descripcion VARCHAR(100) NULL,
Modelo VARCHAR(20) NULL,
Precio_Unitario DOUBLE ZEROFILL NOT NULL,
Existencia INTEGER UNSIGNED ZEROFILL NOT NULL,
PRIMARY KEY(PK_Producto),
INDEX indCategorias_fk(Categorias_idCategorias),
INDEX indMarcas_fk(Marcas_idMarcas),
FOREIGN KEY(Categorias_idCategorias)
REFERENCES Categorias(idCategorias)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY(Marcas_idMarcas)
REFERENCES Marcas(idMarcas)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;
CREATE TABLE Productos (
PK_Producto VARCHAR(20) NOT NULL,
Marcas_idMarcas VARCHAR(20) NOT NULL,
Categorias_idCategorias VARCHAR(30) NOT NULL,
Descripcion VARCHAR(100) NULL,
Modelo VARCHAR(20) NULL,
Precio_Unitario DOUBLE ZEROFILL NOT NULL,
Existencia INTEGER UNSIGNED ZEROFILL NOT NULL,
PRIMARY KEY(PK_Producto),
INDEX indCategorias_fk(Categorias_idCategorias),
INDEX indMarcas_fk(Marcas_idMarcas),
FOREIGN KEY(Categorias_idCategorias)
REFERENCES Categorias(idCategorias)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY(Marcas_idMarcas)
REFERENCES Marcas(idMarcas)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;
