Excepciones en MySQL

El tema de excepciones no suele ser del gusto de lor programadores dada la cantidad de condiciones a las que se someten sus aplicaciones durante su ejecución. Al momento de tratar un condición, podemos tratarla según dos enfoques:

  • Enfoque conservador: consiste en comprobar primero y luego actuar.
  • Enfoque optimista: consiste en probar primero y analizar despues.

Tomando en enfoque optimista, analizaremos el caso de un stored procedure en MySQL que ejecute una INSERT, y si el mismo dio error (por ejemplo por PK duplicada) realice un UPDATE. Como se observa, cumple con el enfoque:

  1. Intentamos ejecutar el INSERT
  2. Luego analizamos sus consecuencias y tomamos medidas correctivas

Para hacer esto veremos un poco de handlers en MySQL.

Los handlers de MySQL permiten hacer un tratamiento especifico de ciertas condiciones (estas condiciones suelen estar relacionadas con errores).

Para revisar la sintaxis de handlers recomiendo hechar un vistazo a la documentación oficial de MySQL: DECLARE handlers

Nuestro ejemplo:

[SQL]
CREATE PROCEDURE ...
BEGIN
-- Declaro el handler que al darse una condicion
-- continue su ejecucion, pero registre un flag
SET @flag=0;
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @flag = 1;
INSERT INTO TABLA........;
-- Si flag=1 es porque se dio la condicion SQLSTATE '23000'
-- (23000, en realidad, engloba muchos errores de violacion)
-- Como no se ejecuto el INSERT entonces probamos con UPDATE.
IF @flag = 1 THEN
UPDATE TABLA...........;
END IF;
END $$
[/SQL]

1 mención a este artículo
Deje su comentario

Por favor, ingrese su nombre

Por favor, ingrese un correo-e válido

Por favor, ingrese su mensaje

luauf.com 2013

WordPress