Duda de primaria..., ¿es posible y válida una estructura así?
¡Hola!
De repente me surgió una duda de niño de 7 años..., ¿es posible y válida para Delphi una estructura de control como ésta?
El punto es que requiero añadir a una tabla una serie de datos tomados de una matriz en memoria, PERO EN CASO DE FALLA que todos los datos ingresados en la tabla SE REVIERTAN y la tabla quede como estaba antes de entrar a éste proceso... |
Solo tienes que explícitamente iniciar y finalizar la transacción.
|
Cita:
|
Cita:
|
No sólo no debería haber problemas, como dice Neftali: Es que debería hacerse siempre así. Si no recuerdo mal, así se explica en "La Cara Oculta de Delphi", o quizá fue en otro libro.
La cuestión es que, si hay un error, entonces se debería "rollbackear" la transacción para evitar problemas ulteriores (corrupción de datos, actualizaciones incompletas, etc). El uso de "TRY .. EXCEPT .. END;" es, entonces, de uso obligado. Otro tema es decidir dónde poner el bloque "TRY .. EXCEPT", si dentro o fuera del bucle. Supongo que depende de dónde haces el Committeo. |
Cita:
|
Seria interesante saber porque te surgió la duda.
|
Cita:
Y de ahí, si todo es correcto, se le hace un "commit" a todos los registros recientemente añadidos, o en caso contrario, se revierte el proceso. Mi duda en concreto se centraba en que si la transacción TAMBIÉN abarcaba a los registros añadidos vía la función y los considera dentro del proceso del commit/rollback, y después de un tiempo corriendo para probarla, puedo decir que sí, los considera y los procesa como si estuviesen dentro del try mismo. Gracias a todos por sus esclarecedoras respuestas. |
La franja horaria es GMT +2. Ahora son las 11:30:50. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi