Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/12/2007, 17:32
Avatar de xcars
xcars
 
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años
Puntos: 4
Re: ¿Qué pasa si ejecuto un ROLLBACK sin que haya ninguna transaccion iniciada?

Pues yo no lo haria asi, para mi la transaccion inicia antes de invocar la funcion, y la funcion me debe devolver 0 si se hizo bien 1 si hubo error
luego de invocar la funcion checo el resultado si es 0 commit de lo contrario rollback.
Espero te sirva

Cita:
Iniciado por albertoshu Ver Mensaje
Hola a todos,

Una dudilla sobre transacciones. Tengo el siguiente codigo:


Código PHP:
1BEGIN;
2INSERT en bbddSi falla ROLLBACK;
3. otro_acceso_a_la_bbdd();
4COMMIT;

5: function otro_acceso_a_la_bbdd(){
6:   INSERT en bbdd;Si falla ROLLBACK;
7: } 

Si se ejecuta el insert de la linea 2, entonces obligatoriametne se tiene que ejecutar el insert de la linea 6 y por eso incluyo estos dos insert dentro de la transacción delimintada por la lines 1 y 4.

El tema es que la funcion otro_acceso_a_la_bbdd() también puede ser invocada desde otra parte del código y, posiblemente, sin estar dentro de una transaccion. En tal caso, si fallara el insert de la linea 6 se ejecutaría un Rollback sin que se hubiera iniciado ninguna transaccion....

Hay algún problema por esto?

Un saludo a todos y gracias por adelantado.
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.