Re: [firebase-br] Concorrência de acesso

Campus campus em sinos.net
Qua Mar 21 10:28:46 -03 2007


O Servidor bloqueia automaticamente, mas se tu quiser fazer isso
explicitamente, pode usar o select for update ou with lock. mas somente nas
versões mais novas do fire.

Ou usar a "atualização vazia", que nada mais é que dar um update num campo
com o mesmo , assim ele ficará preso a tua trasação, e só será liberado após
o commit/rollback.

Suponhamos que tu queira "bloquear" um registro numa tabela de sequenciais
por exemplo

Tupo pode fazer assim:

StartTransaction
Update Tabela
Set Campo = Campo
pronto, esse registro não pode mais ser alterado por outra transação,
somente depois que tu fizer o commit ou o rollback.
...
...
...
Update Tabela
Set campo = campo + 1 (ou campo = novovalor)
Commit/rollback
agora o registro está liberado



----- Original Message ----- 
From: "BandaLemuel" <bandalemuel em yahoo.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, March 21, 2007 9:40 AM
Subject: Re: [firebase-br] Concorrência de acesso


        Pegando uma carona, como posso fazer esse lock ?


----- Original Message ----- 
From: "Davi Eduardo Borges Wall" <davi.wall em mult.com.br>
To: <renan em safetech.inf.br>; "FireBase" <lista em firebase.com.br>
Sent: Wednesday, March 21, 2007 9:31 AM
Subject: RES: [firebase-br] Concorrência de acesso


Renan,

Se vc utilizar o esquema que mencionei,
Neste seu exemplo, vai fucnionar perfeitamente

Quando primeiro usuário alocar o registro com valor de 500 reais, ele vai
fazer o desconto. Quando segundo usuário for salvar o registro de 500 reais
com o desconto dele, na hora do commit, vai aparecer uma mensagem que o
registro já foi alterado.

[]'s
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Renan de Oliveira
Enviada em: quarta-feira, 21 de março de 2007 09:09
Para: FireBase
Assunto: Re: [firebase-br] Concorrência de acesso

Vamos supor o seguinte exemplo.

Dois fulanos estao com a mesma tela de pagamento a ser efetuado de um
determinado cliente, com saldo a pagar de 500,00
fulano1 - pega o saldo a pagar 500 e desconta um pagamento de 200 reais,
saldo fica de 300,00
fulano 2 - pega o saldo a pagar 500 e desconta um pagamento de 100 reais,
saldo fica de 400,00

e isso nao pode acontecer, pois o saldo deveria de ser 500 - 200 - 100 =
200,00

Renan

----- Original Message ----- 
From: "Davi Eduardo Borges Wall" <davi.wall em mult.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, March 21, 2007 9:03 AM
Subject: RES: [firebase-br] Concorrência de acesso


Como assim ?
As chances disto acontecer são enormes se você iniciar a transação por
exemplo no Onshow do form e commitar depois do post.

Lock, é quase impossível de acontecer iniciando a transação antes do post e
comitando após o post. É uma fração de segundo. Uma das maiores empresas
De ERP do Brasil tem sua tecnolgia baseada nesta regra.

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Rubem Nascimento da Rocha
Enviada em: quarta-feira, 21 de março de 2007 08:49
Para: lista em firebase.com.br
Assunto: Re: [firebase-br] Concorrência de acesso
Prioridade: Alta

Concordo com o Renan. Ele pode não querer saber qual o usuário que pegou o
bloqueio primeiro, mas se um deles abrir uma transação e efetuar uma
atualização no determinado registro, a outra pessoa que tentar atualizar o
mesmo registro pode receber uma exceção de deadlock. Sds.


>From: "Renan de Oliveira" <renan em safetech.inf.br>
>Reply-To: renan em safetech.inf.br, FireBase <lista em firebase.com.br>
>To: "FireBase" <lista em firebase.com.br>
>Subject: Re: [firebase-br] Concorrência de acesso
>Date: Wed, 21 Mar 2007 08:43:22 -0300
>
>Davi,
>
>Nao creio que essa forma de pensar esteja correta...
>em inúmeras situacoes eh necessario fazer lock do registro...
>
>Renan
>----- Original Message -----
>From: "Davi Eduardo Borges Wall" <davi.wall em mult.com.br>
>To: "FireBase" <lista em firebase.com.br>
>Sent: Wednesday, March 21, 2007 8:36 AM
>Subject: RES: [firebase-br] Concorrência de acesso
>
>
>Você não precisa saber se dois usuários estarão utilizando o mesmo
>registro.
>
>Isto é natural. Aquele que salvar o registro primeiro é o beneficiado.
>
>
>-----Mensagem original-----
>De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
>nome de Gleiber
>Enviada em: quarta-feira, 21 de março de 2007 07:59
>Para: Lista Firebird
>Assunto: [firebase-br] Concorrência de acesso
>
>Ola lista!
>tenho uma aplicação delphi+dbexpress+firebird..q roda blz em desktop..estou
>migrando pra rede...tenho uma duvida..
>Como tratar as concorrências qdo 2 usuarios acessam o mesmo registro..por
>exemplo:
>vou baixar um titulo em conta receber..pra trazer o cliente. filtro com
>clientdataset..entaum ele fica na memoria....até que eu confirme a baixa do
>titulo, se um 2º usuario for fazer essa baixa pra esse mesmo registro...com
>o mesmo procedimento..como vou saber q está sendo utilizado mesmo registro?
>Não uso applyupdate....ao salvar eu inicio e finalizo as transações....
>
>Tem como utilizar with lock no firebird..como ficaria a sintaxe pra essa
>situação..?
>
>Obrigado
>Gleiber/MG
>______________________________________________
>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
>
>______________________________________________
>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
>
>
>
>______________________________________________
>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

_________________________________________________________________
MSN Busca: fácil, rápido, direto ao ponto.  http://search.msn.com.br


______________________________________________
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

______________________________________________
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




______________________________________________
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

______________________________________________
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


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.446 / Virus Database: 268.18.16/729 - Release Date: 21/3/2007
07:52




_______________________________________________________
Yahoo! Mail - Sempre a melhor opção para você!
Experimente já e veja as novidades.
http://br.yahoo.com/mailbeta/tudonovo/




______________________________________________
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


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.446 / Virus Database: 268.18.16/729 - Release Date: 21/03/2007
07:52






Mais detalhes sobre a lista de discussão lista