|
CREATE TABLE IF NOT EXISTS `mydb`.`Padre` (
|
`idPadre` INT NOT NULL ,
|
`nombre` VARCHAR(45) NULL ,
|
PRIMARY KEY (`idPadre`) )
|
ENGINE = InnoDB;
|
CREATE TABLE IF NOT EXISTS `mydb`.`Hijo` (
|
`idHijo` INT NOT NULL AUTO_INCREMENT ,
|
`nombre` VARCHAR(45) NULL ,
|
`Padre_idPadre` INT NOT NULL ,
|
PRIMARY KEY (`idHijo`, `Padre_idPadre`) ,
|
INDEX `fk_Hijo_Padre` (`Padre_idPadre` ASC) ,
|
CONSTRAINT `fk_Hijo_Padre`
|
FOREIGN KEY (`Padre_idPadre` )
|
REFERENCES `mydb`.`Padre` (`idPadre` )
|
ON DELETE NO ACTION
|
ON UPDATE NO ACTION)
|
ENGINE = InnoDB;
|
INSERT INTO `mydb`.`Padre` (`idPadre`, `nombre`) VALUES (1, 'primero');
|
DELIMITER //
|
CREATE PROCEDURE proc_IngresarSolicitudFormulario(
|
npadre_ varchar(45),
|
nhijo_ varchar(45)
|
)
|
|
begin
|
|
/*Handler para error SQL*/
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
BEGIN
|
SELECT 'ERROR SQLEXCEPTION' as error;
|
ROLLBACK;
|
END;
|
|
/*Handler para error SQL*/
|
DECLARE EXIT HANDLER FOR SQLWARNING
|
BEGIN
|
SELECT 'ERROR SQLWARNING' as error;
|
ROLLBACK;
|
END;
|
|
START TRANSACTION;
|
|
select @id_:=idPadre from Padre where nombre like npadre_;
|
|
INSERT INTO `mydb`.`Hijo`
|
(
|
`nombre`,
|
`Padre_idPadre`)
|
VALUES
|
(
|
nhijo_,
|
@id_
|
);
|
|
|
COMMIT;
|
|
end
|
// DELIMITER ;
|
call proc_IngresarSolicitudFormulario('primero1','luis'); //Resultado OK - Retorna Excepción
|
call proc_IngresarSolicitudFormulario('primero2','luis'); //Resultado OK - Retorna Excepción
|
call proc_IngresarSolicitudFormulario('primero','luis'); // Resultado OK - Realiza registro
|
call proc_IngresarSolicitudFormulario('primero1','luis'); // Resultado !!! - No debería realizar el registro
|
call proc_IngresarSolicitudFormulario('primero2','luis'); // Resultado !!! - No debería realizar el registro
|
|