Re: RES: [firebase-br] Concorrência de Acesso

Magno System magno em speet.com.br
Qua Mar 21 14:36:57 -03 2007


Eu tenho um ponto de venda e faço da seguinte maneira.

Eu tenho uma tabela AUXILIARVENDAS onde a cada item passado para venda ele 
faz o seguinte:

Abre a transação
Insere o numerodocaixa + dados do produto na tabela AUXVENDAS;
Fecha transação
Essa operação se repetirá para cada produto passado.

Aí quando todos os itens tiverem passados no caixa, e o vendedor fechar a 
venda o sistema faz o seguinte:

Abre transação
 EXECUTE PROCEDURE CADASTRAVENDA(NumerodoCaixa):
Fecha transação

Essa procedure cadastrará na tabela VENDAS todos os produtos da tabela 
AUXVENDAS correspondentes ao caixa X (NumeroCaixa) e após cadastrado limpará 
da tabela AUXVENDAS os itens do caixa X, podendo assim iniciar uma nova 
venda.

A tabela de vendas por sua vez tem uma trigger (After Insert) que como o 
Cantu disse abate o estoque.

Desta maneira as transações ficam abertas por frações de segundos.

Agora se você abrir a transação, começar a cadastrar os itens (supomos que 
sejam muitos) e só depois fechar, tenha a certeza de que terá muitos 
deadlocks.

T+





Mais detalhes sobre a lista de discussão lista