[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