Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Consulta sobre transacciones (https://www.clubdelphi.com/foros/showthread.php?t=43314)

Ezecool 08-05-2007 16:29:25

Consulta sobre transacciones
 
Hola amigos, quisiera que me aconsejen sobre el uso de transacciones, mi duda surge al realizar actualizaciones en tablas en las que si un registro falla al actualizarse, simplemente lo descarto y continuo con el siguiente, estoy haciendo lo siguiente:

Código Delphi [-]
while not (tabla1.eof) then
begin
   Update_Tabla2.Connection.BeginsTrans;   
   try
     Update_Tabla2.Parameters.ParamByName('PSueldo').Value := 
        Tabla1.Sueldo * 1,10;
     Update_Tabla2.ExecSql;
     Update_Tabla2.Connection.CommitTrans;
   Except
     Update_Tabla2.Connection.RollBackTrans;
   end;
   Tabla1.Next;
end;
Esta bien que abra una transaccion por cada registro que quiero actualizar, no consume muchos recursos o tiempo esta tecnica? Muchas gracias

EDITADO: (Neftalí) Añado los TAG's.

juanlaplata 08-05-2007 17:05:23

Piensa lo siguiente, cual es el sentido de una transaccion, para que es el comit y el rollback. La respuesta a esto se asemeja a lo que haces pero no en todo su criterio.
Una transaccion se le da commit si se realiza en su totalidad, en tu caso creo que la totalidad de la transaccion seria que actualize todos los registros y no una parcialidad. Si ocurre un problema en el proceso de actualizacion esta el rollback para el rescate.
Creo que deberias comenzar la trans. junto con el Try fuera del Loop.

Neftali [Germán.Estévez] 08-05-2007 17:42:15

Por favor utiliza TAG's cuando añadas código delphi a los mensajes.
Resulta mucho más lejible.

Neftali [Germán.Estévez] 08-05-2007 17:45:41

Cita:

Empezado por Ezecool
Esta bien que abra una transaccion por cada registro que quiero actualizar?

Depende del ámbito que quieras para la transacción; Si se trata de un único registro creo que no hace falta, porque si falla la actualización en ese registro ya no se actualizará.
Si quieres que se actualicen todos los registros o ninguno, en ese caso debes sacarlo fuera como ya te han dicho.


La franja horaria es GMT +2. Ahora son las 05:54:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi