ERROR AL CREAR BD (FK)

6 views
Skip to first unread message

Danilo

unread,
Dec 6, 2013, 2:21:49 PM12/6/13
to programa...@googlegroups.com
hola amigos tengo un error al crear unas relaciones con unas tablas no me deja miren


create table proveedores
(
id_proveedor int unsigned auto_increment not null,
rutproveedor varchar(20)not null,
nombre varchar(100) not null,
direccion varchar(100),
giro varchar(100),
telefono varchar(50),
celular varchar(50),
correo varchar(50),
pagina varchar(50),
pais varchar(50),
ciudad varchar(50),
comuna varchar(50),
descripcion varchar(200),
primary key(id_proveedor),
unique unq_proveedor(rutproveedor)
)engine=Innodb DEFAULT character set=utf8 COLLATE=utf8_spanish_ci


create table productos
(
id_productos int unsigned not null auto_increment,
codigo_productos int unsigned not null,
nombre_productos varchar(100),
descripcion varchar(200),
valor_unidad int unsigned,
unidades_existentes varchar(200),
fk_proveedores int unsigned,
primary key (id_productos),
unique unq_productos(codigo_productos),
        foreign key (fk_proveedores)
        references proveedores(id_proveedor)
        on delete cascade
        on update cascade
)engine=Innodb default character set=utf8 collate=utf8_spanish_ci

Y AQUI ME DA EL ERROR CUANDO QUIERO CREAR ESTA TABLA

create table facturas
(
id_factura int unsigned not null auto_increment,
numero_factura int unsigned,
fecha varchar(12),
codigo_articulo int unsigned,
giro varchar(100),
descripcion varchar(200),
codigo_cuentas int unsigned,
fk_proveedores int unsigned,
fk_productos int unsigned,
primary key(id_factura),
unique unq_factura(numero_factura),
foreign key (fk_productos) REFERENCES productos(id_productos)
        on delete cascade
        on update cascade
foreign key (fk_proveedores) REFERENCES proveedores(id_proveedor)
        on delete cascade
        on update cascade
)engine=Innodb default character set=utf8 collate=utf8_spanish_ci


Jonathan Morales Salazar

unread,
Dec 6, 2013, 6:06:07 PM12/6/13
to programa...@googlegroups.com
el problema sucede porque fk_proveedores ya está establecido como relación, para eso solo basta darle un nombre al índice de tal forma que identifique las relaciones como únicas:

...
primary key (id_productos),
index produ_provee (fk_proveedores)  -- acá le doy nombre al índice, repito esto en todas las tablas usando nombre diferentes
unique unq_productos(codigo_producto)
...

...

fk_proveedores int unsigned,
fk_productos int unsigned,
primary key(id_factura),
index fact_provee (fk_proveedores),
index fact_prod (fk_productos)
...
Reply all
Reply to author
Forward
0 new messages