[firebase-br] Snapshot Table Stability
Eduardo Pelizzari de Andrade
eduardoandrade em persoft.com.br
Sex Jul 6 09:16:38 -03 2007
Se você criar uma exceção para estoque negativo, uma trigger para a
tabela de movimentos que altere a tabela de quantidade física no
estoque, que seja executada antes da inserção do movimento e outra
trigger na tabela de estoque que teste a quantidade física do estoque
antes da atualização e caso seja negativa retorne a exceção, parando
toda movimentação, não resolve o teu problema?
Anticlei Scheid escreveu:
> Bom dia.
>
> Obrigado a todos pelas respostas.
> Talvez eu esteja equivocado em querer usar esta característica então vou
> explicar com mais detalhe porque achei que preciso.
>
> Tenho uma tabela que registra os movimentos físicos de estoque e quando
> executo um despacho físico dos itens de um pedido de vendas tenho que
> garantir que nenhum outro usuário fará baixas nos mesmos itens até que a
> transação termine.
> Embora a transação seja muito rápida é possível que dois usuários iniciem
> transações coincidentes com algum ou alguns itens em comum e como as
> transações não "enxergam" entre si os registros inseridos por outra
> transação é possível que o sistema permita baixa de um item que não esteja
> no estoque, pois seu saldo é calculado sobre os registros de movimento, logo
> o aplicativo pode não bloquear um saldo negativo porque simplesmente não
> estaria negativo no momento da transação coincidente.
> Concordo que a probabilidade de acontecer é muito pequena, mas existem,
> então eu queria que ao iniciar uma transação dessas a tabela de movimentos
> ficasse travada para outras transações até que este primeira terminasse,
> garantindo 100% o cálculo do saldo no momento.
>
> Se alguém puder sugerir uma outra forma agradeço muito.
>
> Abraço
>
> ----- Original Message -----
> From: "Carlos H. Cantu (TeamFB)" <listas em warmboot.com.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Friday, July 06, 2007 7:58 AM
> Subject: Re: [firebase-br] Snapshot Table Stability
>
>
> Vc define as caracteristicas da transação no momento em que abre ela,
> e não nas instruções sql (update, insert, etc) que vc vai rodar.
>
> Cuidado pois esse tipo de isolamento pode gerar vários deadlocks,
> dependendo do número de usuários simultâneos que vc tiver. Até hoje
> nunca precisei usa-la nos meus sistemas.
>
> []s
> Cantu (Membro do TeamFB - FireBase)
> http://www.warmboot.com.br
> 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
> 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> SNAPSHOT TABLE STABILITY, WAIT, WITH LOCK, [PROTECTED | SHARED] {READ |
> 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
> 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
>
>
> ______________________________________________
> 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
>
>
>
--
Eduardo Pelizzari de Andrade
Persoft Softwares Aplicativos
Fone: 55 11 62218061
Mais detalhes sobre a lista de discussão lista