no me borra la tabla haciendo delete on cascade tabla n:m

Iniciado por kinos, 26 Julio 2010, 14:36 PM

0 Miembros y 1 Visitante están viendo este tema.

kinos

Hola buenas:

Tengo dos tablas llamadas "empresas" y otra "clientes". Cuando se produce una venta se introduce una fila en la tabla "ventas" que tiene como índices "idempresas" e "idclientes".
El problema es que cuando quiero borrar una empresa no me elimina las filas de la tabla ventas.
Qué estoy haciendo mal? no sé si estoy poniendo bien delete on cascade... o que ocurre.

Aquí esta el código:

Código (sql) [Seleccionar]

-- -----------------------------------------------------
-- Table `bdd`.`empresas`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `bdd`.`empresas` ;

CREATE  TABLE IF NOT EXISTS `bdd`.`empresas` (
  `idempresas` INT NOT NULL AUTO_INCREMENT ,
  PRIMARY KEY (`idempresas`) ,
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;

-- -----------------------------------------------------
-- Table `bdd`.`clientes`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `bdd`.`clientes` ;

CREATE  TABLE IF NOT EXISTS `bdd`.`clientes` (
  `idclientes` INT NOT NULL AUTO_INCREMENT ,
  PRIMARY KEY (`idclientes`) ,
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;

-- -----------------------------------------------------
-- Table `bdd`.`ventas`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `bdd`.`ventas` ;

CREATE  TABLE IF NOT EXISTS `bdd`.`ventas` (
  `empresas_idempresas` INT NOT NULL ,
  `clientes_idclientes` INT NOT NULL ,
  `venta` INT NOT NULL ,
  PRIMARY KEY (`empresas_idempresas`, `clientes_idclientes`) ,
  CONSTRAINT `fk_empresas_has_ventas`
    FOREIGN KEY (`empresas_idempresas` )
    REFERENCES `bdd`.`empresas` (`idempresas` )
    ON DELETE CASCADE
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_empresas_has_ventas2`
    FOREIGN KEY (`clientes_idclientes` )
    REFERENCES `bdd`.`clientes` (`idclientes` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;

CREATE INDEX `fk_empresas_has_ventas` ON `bdd`.`ventas` (`empresas_idempresas` ASC) ;

CREATE INDEX `fk_empresas_has_ventas2` ON `bdd`.`ventas` (`clientes_idclientes` ASC) ;

Ari Slash

no te los borra pos ser n:m

la primary key de esa tabla se compone de las dos primary key de clientes y empresas
debes de eliminar tambien la fk que viene desde clientes para que desaparezca el registro

pregunta: por que quieres borrar la venta al eliminar la empresa?? no deberia de ser asi


saludos



kinos

Gracias.

Citarpregunta: por que quieres borrar la venta al eliminar la empresa?? no debería de ser asi

Perdón por el ejemplo, no le presté atención a la lógica  :-\. Simplemente quería saber el porqué ocurría esto.