Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-8848

Error transaccional al momento de insertar un valor con campo en blanco

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Not a Bug
    • Affects Version/s: 10.0.20
    • Fix Version/s: N/A
    • Labels:
      None
    • Environment:
      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

        Attachments

          Activity

            People

            Assignee:
            Unassigned
            Reporter:
            pichi009 Willy Rosal
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: