Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Not a Bug
-
10.0.20
-
None
-
MariaDb para Linux Debian Jessy
Description
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 |