Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   deadlock ¿esto q es? (https://www.clubdelphi.com/foros/showthread.php?t=15173)

chele 13-10-2004 11:26:13

deadlock ¿esto q es?
 
Buenas tenia un programa que funcionaba bien, estaba haciendo unas modificaciones pero ahora de repente cuando intento guardar el identificador siempre me dice este error :

deadlock
update conflict with concurrent update.

¿Que es esto? ¿Que esta fallando?.

chele 13-10-2004 11:28:44

Ah se me olvidaba, un ejemplo del codigo :

Código:

   
    function ComptadorAsegurados: integer;
    var num: integer;
   
    begin
              dmcontadores.contAsegurados.open;
              dmcontadores.contAsegurados.edit;
              num := dmcontadores.contAsegurados.fieldbyname('codaseg').value;
              dmcontadores.contAsegurados.fieldbyname('codaseg').value :=
          dmcontadores.contAsegurados.fieldbyname('codaseg').value + 1;
              dmcontadores.contAsegurados.post;
              dmcontadores.contAsegurados.close;
              result := num;
    end;


Lepe 13-10-2004 12:14:57

Cita:

Empezado por chele
Ah se me olvidaba, un ejemplo del codigo :

Código:


 function ComptadorAsegurados: integer;
 var num: integer;
 
 begin
          dmcontadores.contAsegurados.open;
          dmcontadores.contAsegurados.edit;
          num := dmcontadores.contAsegurados.fieldbyname('codaseg').value;
          dmcontadores.contAsegurados.fieldbyname('codaseg').value :=
dmcontadores.contAsegurados.fieldbyname('codaseg').value + 1;
          dmcontadores.contAsegurados.post;
          dmcontadores.contAsegurados.close;
          result := num;
 end;


Sería conveniente que dijeras que BD estas usando, componentes de acceso y cuantos usuarios estan accediendo al sistema.

Sin esta información, lo único que puedo decirte es que DeadLock es un "abrazo mortal" una transacción está intentando modificar un registro que está bloqueado por otro usuario/proceso/transacción.

Código Delphi [-]
 
 function ComptadorAsegurados: integer;
 var num: integer;
 
 begin
     dmcontadores.contAsegurados.open;
     num := dmcontadores.contAsegurados.fieldbyname('codaseg').value;
     dmcontadores.contAsegurados.edit;
     dmcontadores.contAsegurados.fieldbyname('codaseg').value := num+1;
     dmcontadores.contAsegurados.post;
     dmcontadores.contAsegurados.close;
     result := num;
 end;

Yo propondría este otro código. Que bloquea el registro justo antes de modificar el valor, y además no hace una lectura del mismo registro una vez que ya se encuentra bloqueado por escritura.

Saludos y espero que al menos, te ayude a intuir el error.

PD: Edita tu mensaje y pon en otra línea ese texto que es tan largo y hace aparecer la barra de scroll horizontal Gracias.


La franja horaria es GMT +2. Ahora son las 19:33:33.

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