Stack Overflow en español Asked by crmiguez on February 21, 2021
Estoy a crear una entidad débil MySQL llamada ubicaciones_plantas, que depende de otra llamada departamentos. La en cuestión tiene esta estructura en SQL:
- -----------------------------------------------------
-- Table `bd`.`ubicaciones_plantas`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `bd`.`ubicaciones_plantas` ;
CREATE TABLE IF NOT EXISTS `inventario_aixina`.`ubicaciones_plantas` (
`iddepartamento` VARCHAR(50) NOT NULL,
`idubicacion` INT NOT NULL,
`abreviacion_ubicacion` VARCHAR(50) NOT NULL,
`descripcion_ubicacion` VARCHAR(100) NULL,
PRIMARY KEY (`iddepartamento`, `idubicacion`)
)
ENGINE = InnoDB;
ALTER TABLE `bd`.`ubicaciones_plantas`
ADD CONSTRAINT `fk_ubicacion_departamento`
FOREIGN KEY (`iddepartamento`)
REFERENCES `bd`.`ubicaciones_plantas` (`iddepartamento`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
La tabla de departamentos, de esta otra forma:
-- -----------------------------------------------------
-- Table `bd`.`departamentos`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `bd`.`departamentos` ;
CREATE TABLE IF NOT EXISTS `bd`.`departamentos` (
`iddepartamentos` VARCHAR(50) NOT NULL,
`nombre_departamento` VARCHAR(100) NULL,
`sede_departamento` VARCHAR(50) NOT NULL,
PRIMARY KEY (`iddepartamentos`),
CONSTRAINT `fk_departamento_sede`
FOREIGN KEY (`sede_departamento`)
REFERENCES `bd`.`sedes` (`idsedes`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
CREATE INDEX `fk_departamento_sede_idx` ON `bd`.`departamentos` (`sede_departamento` ASC) VISIBLE;
Al arrancar en MySQL Workbench, salta este error de indexación:
Toda SQL la he generado desde el EER Model, y al tener el fallo anterior, la constraint la puse a mano y vuelve al mismo punto.
Qué tengo que modificar en la entidad débil para que pueda continuar creando el resto de tablas?
Muchas gracias por anticipado! 🙂
Recuerda que una clave ajena debe estar referenciada a un campo, al menos, indexado. Añade este índice y ya no te dará el error que comentas:
ALTER TABLE ubicaciones_plantas ADD INDEX(iddepartamento);
Correct answer by David JP on February 21, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP