Hola a todos, la verdad tengo más o menos claro el tema de las llaves foráneas en mysql, con MySql Workbench construí una base de datos y lo que resultó no puedo introducir datos. Así que ya estoy muy confuso.
Les cuento primero lo que tengo que hacer.
Tengo una tabla de 'ordenes_trabajos', otra donde hay una lista de posibles tareas para las ordenes o sea una tabla 'tareas' y necesito hacer una tabla donde queden las tareas asignadas a la base de datos en una tercera tabla que se llama 'trabajos'.
Esa tabla se generó haciendo una relacion de muchos a muchos entre las tablas tareas y ordenes_trabajos.
Tengo entendido que ahí tienen que ir las FK en los dos campos que hay.
el código SQL que me genera Workbench es el siguiente para esa tabla:
Código:
CREATE TABLE IF NOT EXISTS `sav_muller`.`trabajos` (
`tareas_id_tarea` INT NOT NULL ,
`ordenes_trabajo_id_ot` INT NOT NULL ,
INDEX `fk_tareas_has_ordenes_trabajo_tareas1` (`tareas_id_tarea` ASC) ,
INDEX `fk_tareas_has_ordenes_trabajo_ordenes_trabajo1` (`ordenes_trabajo_id_ot` ASC) ,
CONSTRAINT `fk_tareas_has_ordenes_trabajo_tareas1`
FOREIGN KEY (`tareas_id_tarea` )
REFERENCES `sav_muller`.`tareas` (`id_tarea` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_tareas_has_ordenes_trabajo_ordenes_trabajo1`
FOREIGN KEY (`ordenes_trabajo_id_ot` )
REFERENCES `sav_muller`.`ordenes_trabajo` (`id_ot` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
La cual al importarla desde phpmyadmin se me queda pegado y excede el límite de tiempo de 300 segundos.
La verdad ya no entiendo que es lo que pasa. Ya que antes, en otro SQL
Código:
CREATE TABLE IF NOT EXISTS `sav_muller`.`trabajos` (
`tareas_id_tarea` INT NOT NULL ,
`ordenes_trabajo_id_ot` INT NOT NULL ,
PRIMARY KEY (`tareas_id_tarea`, `ordenes_trabajo_id_ot`) ,
INDEX `fk_trabajos_tareas1` (`tareas_id_tarea` ASC) ,
INDEX `fk_trabajos_ordenes_trabajo1` (`ordenes_trabajo_id_ot` ASC) ,
CONSTRAINT `fk_trabajos_tareas1`
FOREIGN KEY (`tareas_id_tarea` )
REFERENCES `sav_muller`.`tareas` (`id_tarea` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_trabajos_ordenes_trabajo1`
FOREIGN KEY (`ordenes_trabajo_id_ot` )
REFERENCES `sav_muller`.`ordenes_trabajo` (`id_ot` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
crea la tabla, pero al insertarle datos no me deja ya que dice que el primer campo está duplicado.
La verdad ya estoy con un dolor de cabeza con esto, si alguien me puede explicar que puedo hacer se lo agradecería.
Espero sus aportes.
Gracias.