Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/04/2014, 13:32
yosoloyo
 
Fecha de Ingreso: mayo-2008
Mensajes: 156
Antigüedad: 16 años
Puntos: 0
Problema con Begin(); Commit();

Muy buenas,

Hace casi un año pregunté en este tema, como poder hacer que desde mysql en caso de que se tuvieran que ejecutar varias sentencias para poder actualizar varias tablas, en caso de que algún insert, update, etc, fallara, que el resto de transacciones, si se habían llevado a cabo volvieran a su estado anterior.

Se me explicó que haciendo ....

Código MySQL:
Ver original
  1.  SENTENCIA 1;
  2.  SENTENCIA 2;
  3.  ...

... se podría cumplir esa función siempre que las tablas fueran InnoDB.

Cumpliendose ese caso, me da un error el cual si quito simplemente el begin commit, deja crear el procedimiento sin problemas.

Dejo sin desarrollar el procedimiento que quiero crear, dado que como digo, quitando el begin(); commit(); si se crea con éxito.

Código MySQL:
Ver original
  1. CREATE PROCEDURE nomprocedimiento(IN v1 int, IN v2 int)
  2.   DECLARE var1, var2, var3 INT DEFAULT 0;
  3.   SELECT campo1, campo2, campo3
  4.   INTO idsp, xv, xe, xd, xts, xne
  5.   FROM tabla
  6.   WHERE campo1 = v1;
  7.  
  8.  
  9.  BEGIN();
  10.  
  11.   IF var1 > 0 THEN
  12.     INSERT INTO ....;
  13.     UPDATE ....;
  14.     INSERT INTO ...;
  15.   END IF;
  16.  
  17.  COMMIT();

De antemano gracias como siempre