[firebase-br] Snapshot Table Stability
Carlos H. Cantu (TeamFB)
listas em warmboot.com.br
Sex Jul 6 09:22:30 -03 2007
Vc não precisa usar "table stability" para garantir isso. Qualquer
isolamento transacional no firebird impede que 2 transações alterem o
mesmo registro ao mesmo tempo.
Faça a atualização do estoque através de um trigger, e estará tudo
resolvido, mesmo usando Read Commited.
Sugiro que vc leia os artigos sobre transações no site da FireBase,
para se familiarizar com o assunto.
[]s
Cantu (Membro do TeamFB - FireBase)
http://www.warmboot.com.br
FireBase - http://www.FireBase.com.br
AS> Bom dia.
AS> Obrigado a todos pelas respostas.
AS> Talvez eu esteja equivocado em querer usar esta característica então vou
AS> explicar com mais detalhe porque achei que preciso.
AS> Tenho uma tabela que registra os movimentos físicos de estoque e quando
AS> executo um despacho físico dos itens de um pedido de vendas tenho que
AS> garantir que nenhum outro usuário fará baixas nos mesmos itens até que a
AS> transação termine.
AS> Embora a transação seja muito rápida é possível que dois usuários iniciem
AS> transações coincidentes com algum ou alguns itens em comum e como as
AS> transações não "enxergam" entre si os registros inseridos por outra
AS> transação é possível que o sistema permita baixa de um item que não esteja
AS> no estoque, pois seu saldo é calculado sobre os registros de movimento, logo
AS> o aplicativo pode não bloquear um saldo negativo porque simplesmente não
AS> estaria negativo no momento da transação coincidente.
AS> Concordo que a probabilidade de acontecer é muito pequena, mas existem,
AS> então eu queria que ao iniciar uma transação dessas a tabela de movimentos
AS> ficasse travada para outras transações até que este primeira terminasse,
AS> garantindo 100% o cálculo do saldo no momento.
AS> Se alguém puder sugerir uma outra forma agradeço muito.
AS> Abraço
AS> ----- Original Message -----
AS> From: "Carlos H. Cantu (TeamFB)" <listas em warmboot.com.br>
AS> To: "FireBase" <lista em firebase.com.br>
AS> Sent: Friday, July 06, 2007 7:58 AM
AS> Subject: Re: [firebase-br] Snapshot Table Stability
AS> Vc define as caracteristicas da transação no momento em que abre ela,
AS> e não nas instruções sql (update, insert, etc) que vc vai rodar.
AS> Cuidado pois esse tipo de isolamento pode gerar vários deadlocks,
AS> dependendo do número de usuários simultâneos que vc tiver. Até hoje
AS> nunca precisei usa-la nos meus sistemas.
AS> []s
AS> Cantu (Membro do TeamFB - FireBase)
AS> http://www.warmboot.com.br
AS> FireBase - http://www.FireBase.com.br
AS>> Boa tarde pessoal.
AS>> Li no livro "The Firebird Book" que podemos utilizar em alguns
AS>> casos específicos uma característica de concorrência chamada "Snapshot
AS> Table Stability".
AS>> Esta característica será muito útil para uma situação específica
AS>> na nossa aplicação, mas não estou conseguindo utilizar as palavras chave
AS> :
AS>> SNAPSHOT TABLE STABILITY, WAIT, WITH LOCK, [PROTECTED | SHARED] {READ |
AS> WRITE}
AS>> Já busquei no livro e na lista de discussão, mas não consegui
AS>> encontrar exemplos de instruções SQL que se utilizem desta
AS> característica.
AS>> Obrigado
AS>> ______________________________________________
AS>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
AS>> Para editar sua configuração na lista, use o endereço
AS>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
AS>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
AS> ______________________________________________
AS> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
AS> Para editar sua configuração na lista, use o endereço
AS> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
AS> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista