[firebase-br] Conflito na hora de atualizar registro

Evandro Siqueira vansiqq em gmail.com
Ter Maio 22 08:39:24 -03 2007


John Klaus Kanenberg escreveu:
> Caros amigos,
>
> Em um sistema que desenvolvi, utilizo uma tabela para gravar um valor de 
> referência em um determinado campo (simulando um generator/trigger via 
> programação)...
>
> Este sistema roda em rede com ambiente windows, servidor win2k com 
> firebird 1.5, com vários usuários gravando registros simultaneamente...
>
> Funciona bem, mas em certas operações do sistema este grava um elevado 
> numero de registros sequenciais no banco de dados, e a cada novo 
> registros o sistema faz um select na tabela de referência, pega o valor 
> e dá um update incrementando este... Mas como este processo acaba se 
> tornando muito rápido e algum outro cliente tentar dar update na tabela 
> de referência acaba dando conflito !!!
>
> Qual seria a melhor opção para resolver este problema, uma vez que o 
> sistema precisa do valor de referência (auto-incremento) antes de gravar 
> as informações simultaneamente em 2 outras tabelas, e ao mesmo tempo 
> vários cliente aleatoriamente precisam alterar (update) o valor de 
> referência.
>
> Utilizo Delphi 7 com acesso ao banco de dados utilizando componentes IBX 
> (TIBDatabase/TIBTransaction/TIBQuery).
>
> Desde já agradeço pela ajuda dos amigos.
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>   

Este sistema funciona bem em sistemas monousuários. Quando passa a ter 
transações concorrentes os dead locks são inevitáveis. Eu utilizo um 
esquema de geração de chave que peguei do Luiz "RedDevil" e que vem 
funcionando perfeitamente. sugiro dar uma olhada nas mensagens postadas 
anteriormente. Em tempo: esse esquema do "reddevil" utiliza os 
componentes de acesso IBO mas pode facilmente ser implementado no IBX ou 
outro componente de acesso, visto que a lógica fica toda no banco de dados.

[]'s
Evandro Siqueira
Aracaju/SE




Mais detalhes sobre a lista de discussão lista