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
[-]
ZServidor.StartTransaction;
try
tabla := 'cobro';
TransactionOfInformation(tabla, ZLQuery1.FieldByName('hostname').AsString);
tabla := 'movimiento';
TransactionOfInformation(tabla, ZLQuery1.FieldByName('hostname').AsString);
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.