Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 14-06-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 26
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por IcebergDelphi
Funciona bien el contador si abro solamente una vez la aplicacion pero si se abre en dos maquinas...
El problema es en si, que si habro dos veces la aplicacion o lo pruebo en dos maquinas al mismo tiempo
el contador de la segunda aplicacion atrapa el numero de la Primera aplicacion, es decir: no se actualiza y
los dos se quedan con el mismo numero correspondiente, ...
en realidad la segunda aplicación (transacción) no "atrapa el numero de la Primera aplicacion", sino que debido al aislamiento entre ambas transacciones (la de la primera y segunda aplicación), las dos ven el mismo valor para el contador, a pesar de que la primera haya modificado su valor.

Una regla a tener en cuenta: dos transacciones concurrentes tendrán la misma visión de los datos (la que tenían cuando se abrieron), a pesar de que una de ellas los modifique, mientras no se confirmen los cambios y desde la segunda se tenga un nivel de aislamiento lo suficientemente bajo (p. ej. READ COMMITTED) para poder ver estos cambios confirmados (commit).

Algunas alternativas:

1. Abrir una transacción independiente para leer y actualizar el valor del contador; mejor a tavés de un procedimiento almacenado, para que el servidor haga el trabajo, cerrando la transacción lo más rápido posible. Como podrían aparecer errores de actulización (que dos transacciones intenten modificar a la vez el contador), habría que controlar en el cliente que de producirse el mismo, se volviese a ejecutar el proceso que obtiene un nuevo valor del contador.

2. Si el valor del contador es un entero, utilizar un mecanismo que no dependa de las transacciones ... los generadores. A tener en cuenta que los generadores, al estar fuera del control transaccional, no le afecta la cancelación de los cambios aplicados (rollback), con lo que pueden aparecer huecos en la secuencia.

Podemos desarrollar más en detalle estas u otras alternativas.

Saludos.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:36:10.


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