Ver Mensaje Individual
  #4  
Antiguo 22-07-2021
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Reputación: 16
ethangio Va por buen camino
Gracias Casimiro y gracias Neftalí por sus respuestas.

Neftalí estoy trabajando con MySQL.

Leyendo sus comentarios recordé que las transacciones en MySQL las tablas deben ser InnoDB y mis 3 tablas (t1,t2 y t3) si son pero el trigger en t2 que envía información a otra tabla después del insert es MyISAM entonces pienso que pudiese ser que por eso el rollback no se aplica en ella.

Mi código delphi no tiene nada de extra ordinario:

Código Delphi [-]
      // Inicia la TRANSACCION 
      ZServidor.StartTransaction;

      try
      // Envío la info del cobro al Servidor
      // hostname es el nombre del servidor a donde se va a enviar la información

      tabla := 'cobro';
      TransactionOfInformation(tabla, ZLQuery1.FieldByName('hostname').AsString); 

      // Envío la info de la movimiento al Servidor
      tabla := 'movimiento';
      TransactionOfInformation(tabla, ZLQuery1.FieldByName('hostname').AsString);

      // Envío la info del detalle del movimiento al Servidor
      tabla := 'detalle';
      TransactionOfInformation(tabla, ZLQuery1.FieldByName('hostname').AsString);

      ZServidor.Commit;
      except on E: Exception do
        begin 
           ZServidor.Rollback;
           ShowMessage(E.ClassName+' error raised, with message : '+E.Message+#10#13+
           'Si continúa recibiendo éste error DETENGA el SERVICIO');
        end;
      end;


Y el trigger en la tabla detalle envía información a otra tabla que es MyISAM que concentra datos para reportes.
Cambiaré el motor de almacenamiento, haré pruebas y les comento.

Muchas gracias por su tiempo.
Responder Con Cita