Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Tratar Errores

Estas en el tema de Tratar Errores en el foro de Mysql en Foros del Web. Hola a todos, les queria hacer una pregunta quiza sea simple para los que saben je, estoy haciendo un stored procedure con savepoint rollback y ...
  #1 (permalink)  
Antiguo 14/05/2012, 08:46
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Tratar Errores

Hola a todos, les queria hacer una pregunta quiza sea simple para los que saben je, estoy haciendo un stored procedure con savepoint rollback y commit lo que necesito saber es como detectar si en un insert o un update hubo un error, investigue con get diagnostics pero solo corre de mysql 5.6 en adelante, existe alguna forma de detectar errores en versiones anteriores? yo uso la 5.5 no es vieja para nada je.

Saludos y desde ya muchas gracias.
  #2 (permalink)  
Antiguo 14/05/2012, 10:06
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Tratar Errores

Bueno investigue un poco mas y di con la solucion se trata de declarar un handler para los errores les dejo el codigo por si a alguien le sirve;

Código SQL:
Ver original
  1. DELIMITER $$;
  2.  
  3. CREATE PROCEDURE `bd`.`proceed`()
  4.  
  5. BEGIN
  6.  
  7. DECLARE EXIT HANDLER
  8.     FOR SQLEXCEPTION, SQLWARNING, NOT FOUND
  9.         ROLLBACK TO PUNTO;
  10.  
  11. START TRANSACTION;
  12.  
  13. SAVEPOINT PUNTO;
  14.  
  15. INSERT INTO tabla1 (nombre) VALUES ("Pedro");
  16. INSERT INTO tabla1 (nombre) VALUES ("Juan");
  17. INSERT INTO tabla1 (nombre) VALUES (150); # En esta linea restorarara todo al inicio osea al SAVEPOINT PUNTO
  18.  
  19. END

Etiquetas: errores, sql, trazar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:30.