Cita:
Empezado por juanelo
Que tal José Román,
Creo que tu error está en:
Código Delphi [-] If fbDataSet.State in dsEditModes then fbDataSet.Cancel;
trLocal.Commit;
Action := caFree;
Ya no tiene sentido hacer commit si tus modificaciones o inserciones se cancelaron.
Saludos
|
¡claro que tiene sentido!, solo por decir un par de casos que se me ocurren:
- Si el nivel de aislamiento de tu transacción es "Repetable read" o "serializable" que es lo mismo, y requerís obtener información "fresca" en tu siguiente select.
- Que tal si la aplicación correrá sin parar durante un año, no querras que tu Oldest Transaction en el servidor sea tan viejo... y tener todas las versiones de todos los registros solo por eso... si la base de datos tiene unos cuantos miles de registros, y unos cuantos millones de updates en el transcurso de un año (una tabla de existencias, es un buen ejemplo). ¡el tamaño de la base de datos sería monstruoso!
Te recuerdo que también los select's y no no solo los insert/update/delete corren en el contexto de una transacción.
Hasta luego.