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

Uso de Transacciones y errores

Estas en el tema de Uso de Transacciones y errores en el foro de Mysql en Foros del Web. Hola, tengo un pequeño problema con este sp. Lo que necesito es que si hay algun error al insertar un registro, me haga un rollback ...
  #1 (permalink)  
Antiguo 27/10/2009, 11:13
 
Fecha de Ingreso: octubre-2009
Mensajes: 46
Antigüedad: 14 años, 6 meses
Puntos: 1
Uso de Transacciones y errores

Hola, tengo un pequeño problema con este sp. Lo que necesito es que si hay algun error al insertar un registro, me haga un rollback y luego me devuelva valor 0 al programa. Podrian decirme donde esta el error pues no estoy seguro si es en lso if then aninados, el uso de la transaccion o lso labels. Muchas gracias


DELIMITER $$

DROP PROCEDURE IF EXISTS `sp_flo_TarjetasSave` $$
CREATE DEFINER=`root`arroba`localhost` PROCEDURE `sp_flo_TarjetasSave`(

In Opcion int
)
BEGIN


begin

SET AUTOCOMMIT = 0;
START TRANSACTION;

IF Opcion = 1 then -- inserta un registro

Insert into tbl_flo_tarjetas
(TarjetaNo, Saldo, Nombre)
Values (TarjetaNo, Saldo, Nombre);
Select arrobaa identity into Result;


IF error THEN
GOTO lblError;
END IF;

End if;

COMMIT TRANSACTION;

set Result = 1;
goto lblExit;

label lblError;
rollback transaction;
set Result = 0;

label lblExit;
select Result;


END $$
  #2 (permalink)  
Antiguo 27/10/2009, 18:51
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Uso de Transacciones y errores

un store procedure tiene una transacción implicita en postgresql.
si ejecutas 500 inserciones dentro de un store procedure y falla en la 287, falla el procedimiento y se hace un rollback automático.

No se si en mysql esto sea igual. Pero puedes hacer la prueba. Ahora no tengo como.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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 14:19.