FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Alcance de las Transacciones
Hola compañeros, tengo una inquietud.
En una transacción como en el proceso de dos tablas más un generador: generador, maestro – detalle, si grabo correcta mente en el maestro pero por alguna razón hay un error en el detalle luego doy instrucciones de anular la transacción (Rollback). Pregunta: ¿me anula inclusive los asientos del maestro?, ¿ocurre en todos los procesos (el Rollback) en tablas, o solamente en la que se presento la excepción?. ¿Asumo una transacción como un procesos que involucraría una sola tabla o un conjunto de procesos con repercusión ilimitada?. Saludos |
#2
|
||||
|
||||
El Rollback deshará todos los cambios realizados desde el StartTransaction , incluyendo post realizados en otras tablas.
Ya se ha dicho en muchas ocasiones que el generador se escapa a las transacciones, por tanto, si se incrementó el generador, éste no se puede volver atrás con el simple mecanismo de Rollback. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#3
|
|||
|
|||
Una pregunta, el Rollback no se aplica al ApplyUpdates?
Si hago un ApplyUpdates sobre un objeto Query, luego hago Rollback y no tiene alcance? |
#4
|
|||
|
|||
Me sumo a la pregunta
Tengo un tClientDatset dentro de una transaccion, pero a pesar de estar dentro de la transaccion se ejecuta cuando le hago applyupdate, y no al hacer el commit. ¿Acaso no sirve colocar dentro de una transaccion el applyupdate? De antemano, muchas gracias
|
#5
|
||||
|
||||
Dadle una visual a la ayuda de TDatabase.ApplyUpdates en la ayuda.
ApplyUpdates calls the dataset's ApplyUpdates and CommitUpdates methods to post that dataset's pending cached updates. Morphine: Aunque se llame a Rollback, los commits anteriores ya se han hecho, por tanto "no hay alcance" . Gran Cacique: Applying updates is a two-phase process that takes place within the context of the database component's transaction control. Acabo de darme cuenta de la fecha de Morphine, lamento que se me haya pasado por alto este hilo . Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#6
|
||||
|
||||
¡Hola a todos!
Cita:
No es una solución muy agradable que digamos porque esto implica volver a cargar todas sus filas. De ahí que hace tiempo me dediqué a desarrollar un derivado de TClientDataSet, donde después de llamar a ApplyUpdates todavía puedes decirle que regrese a un estado previo (para ello le agregué un parámetro "ConfirmSuccess" a ApplyUpdates). El truco está en usar los puntos de restauración (save points) nativos de la clase TClientDataSet y en evitar la llamada a MergeChangeLog que ApplyUpdates realiza internamente. En mi caso, lo implementé de tal forma que cuando hago un Rollback, se revierten también todos los ApplyUpdates que previamente hayan sido "marcados" en el contexto de la transacción. Es decir, logro manejar transacciones multi-capa. Un abrazo. Al González. |
#7
|
||||
|
||||
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Transacciones | juanmdq | Oracle | 3 | 12-01-2007 14:59:42 |
alcance de las propertys | supermilloriver | OOP | 1 | 11-09-2006 23:43:17 |
Transacciones | BlueSteel | Conexión con bases de datos | 1 | 10-09-2004 19:00:16 |
Transacciones | ronson | Firebird e Interbase | 4 | 10-03-2004 12:50:09 |
|