Cita:
Iniciado por xerifandtomas Lo de las transacciones esta muy bien, y aun que no es algo que tengo muy estudiado, pienso que no resolvería este caso concreto que plantea solo con transacciones.
Corrijan me si me equivoco.
Se lanzan 3 peticiones AJAX consecutivas, a 3 archivos diferentes. Por lo que si aplicamos transacciones, cada una de esas consulta puede completarse o no, pero el resto de consultas no saben ni tienen por qué saber si la consultas anteriores se han ejecutado, ya que al ser hilos independientes, serán también transacciones independientes, ni siquiera el que se boquee la tabla afectaria ya que cada una de las sentencias va dirigida a una tabla diferente.
Por lo que antes de aplicar las transacciones, insisto en mi planteamiento.
Primero obtén todos los datos necesarios para las diferentes consultas, luego ejecútalas todas seguidas con o sin transacciones.
Corrijanme si me equivoco.
Son dos cosas distintas.
El OP hablaba de 3 funciones.
Tú hablas de 3 peticiones ajax distintas.
Si el problema es que , o se ejecutan todas las queries, o no se debería ejecutar ninguna, significa que desde el punto de vista de la aplicación, esa secuencia es "atómica":o existe, completa, o no existe.
Por lo tanto, que tengas que obtener todos los datos necesarios antes de realizar la operación, no es la solución.Es un requsito.
Ya tienes todos los datos necesarios.
Ahora supón que la primera query tarda mucho en ejecutarse, y el usuario cierra el navegador (y el php no lo controla).
O supón que en la segunda query, hay un bug.
O que se cae la BD antes de la tercera.
Es ahí donde las transacciones te solucionan el problema.
El supuesto de 3 request ajax independientes no puede suceder, ya que, en ese caso, tras cada request, se habria completado sólo parte del proceso de actualización de la BD.Y, entre las requests, la BD sería incoherente.Mucho peor, si el navegador se cerrase entre las requests.