Lidando com concorrência...particepem...dêem opnião

Delphi

08/09/2003

Suponha 2 maquinas ditas A e B.

As duas maquinas rodam uma aplicacao feita com datasets desconectados.

A maquina A e B abrem ao mesmo tempo a tabela ´Cliente´.

A maquina A altera o saldo do cliente ´João´ e aplica as alteracoes.
Trinta (30) segundos depois a maquina B avalia o saldo do cliente ´João´ para lhe dar um ´empréstimo´

Resultado: a analise do saldo esta se baseando em dados errados.

Como resolver o problema??


Silvana

Silvana

Curtidas 0

Respostas

Bacalhau

Bacalhau

08/09/2003

Se for Paradox antes de verificar o saldo há que fazer Refresh. O ter um componente TTimer que de n em n segundos refresca a informação (é um pouco pesado...)


GOSTEI 0
Maxwell_monteiro

Maxwell_monteiro

08/09/2003

Para resolver isso é que existem os SGDB´s com eles vc nem precisa se preocupar com controle de concorencia nas suas transações!


GOSTEI 0
Silvana

Silvana

08/09/2003

Suponhamos que temos um SGBD (descartem o paradox).
Achei interessante sua observação Max, mas você poderia elucidá-la de uma forma mais clara?


GOSTEI 0
Silvana

Silvana

08/09/2003

Ainda com você Max....

Se não preciso me preocupar com o controle de concorrência, pra que servem então as propriedades e procedures do tipo BeginTrans, Commit e RollBack?

É isso aí pessoal vamos discutir .... esse é um assunto muiiito interessante.


GOSTEI 0
Motta

Motta

08/09/2003

a transacao é conceito de integridade dentro de mesma operacao

exemplo tosco

transferir R$100 da cc para poupanca

operacao

update cc
set valor = valor - 100
where conta = 12345


update poup
set valor = valor + 100
where conta = 12345

isto é só um exemplo a operacao é mais complexa um pouco, mas
uma só pode ser feita se a outra tb for feita, dai a nec. de uma transacao.

ainda seria possivel dar lock no registro até o fim da operacao.


GOSTEI 0
Bacalhau

Bacalhau

08/09/2003

(descartado. snif...) :cry:


GOSTEI 0
POSTAR