Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/06/2012, 17:49
oliverm
 
Fecha de Ingreso: noviembre-2008
Mensajes: 23
Antigüedad: 15 años, 5 meses
Puntos: 0
Verificar Tipo empleado en una herencia

Me explico, digamos que tengo registrados en tabla 'empleado' 2 empleados uno con tipo de empleado 'v' y otro con 'a'

Lo que quiero es que al registrar cada uno a su tabla subtipo respectiva haya una restricción que a la tabla 'administrador' SOLO puedan llegar desde empleado, aquellos empleados con una 'a' y a tabla 'vendedor' SOLO los que tengan 'tipo empleado' 'v'.

Aquí va el código de esa parte de la bbdd:

Código:
-- -----------------------------------------------------
-- Table `omohr4`.`administrador`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `omohr4`.`administrador` (
  `rut_a` INT(8) NOT NULL ,
  `titulo` VARCHAR(35) NOT NULL ,
  PRIMARY KEY (`rut_a`) ,
  INDEX `rut_a` (`rut_a` ASC) ,
  CONSTRAINT `rut_a`
    FOREIGN KEY (`rut_a` )
    REFERENCES `omohr4`.`empleado` (`rut_e` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `omohr4`.`empleado`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `omohr4`.`empleado` 
(
  `rut_e` INT(8) NOT NULL ,
  `nombre` VARCHAR(35) NOT NULL ,
  `apellido` VARCHAR(35) NOT NULL ,
  `calle_nro` VARCHAR(35) NOT NULL ,
  `comuna` VARCHAR(35) NOT NULL ,
  `region` VARCHAR(35) NOT NULL ,
  `fecha_contrato` DATE NOT NULL ,
  `tipo_empleado` ENUM('a','v','j') NOT NULL ,
  `rut_a_fk` INT(8) NULL ,
  
  PRIMARY KEY (`rut_e`) ,
  INDEX `rut_a_fk` (`rut_a_fk` ASC) ,
  CONSTRAINT `rut_a_fk`
    FOREIGN KEY (`rut_a_fk` )
    REFERENCES `omohr4`.`administrador` (`rut_a` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
)
  
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `omohr4`.`vendedor`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `omohr4`.`vendedor` (
  `rut_v` INT(8) NOT NULL ,
  PRIMARY KEY (`rut_v`) ,
  INDEX `rut_v` (`rut_v` ASC) ,
  CONSTRAINT `rut_v`
    FOREIGN KEY (`rut_v` )
    REFERENCES `omohr4`.`empleado` (`rut_e` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `omohr4`.`junior`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `omohr4`.`junior` (
  `rut_j` INT(8) NOT NULL ,
  `cargo_mantencion` VARCHAR(35) NOT NULL ,
  PRIMARY KEY (`rut_j`) ,
  INDEX `rut_j` (`rut_j` ASC) ,
  CONSTRAINT `rut_j`
    FOREIGN KEY (`rut_j` )
    REFERENCES `omohr4`.`empleado` (`rut_e` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;