Lidando com concorrência...particepem...dêem opnião
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??
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
Curtidas 0
Respostas
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
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
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?
Achei interessante sua observação Max, mas você poderia elucidá-la de uma forma mais clara?
GOSTEI 0
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.
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
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.
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
08/09/2003
(descartado. snif...) :cry:
GOSTEI 0