Re: [firebase-br] Dead lock em transações

Eduardo Jedliczka eduardo em gerasoft.com.br
Ter Fev 22 08:06:12 -03 2005


Evandro, ninguém respondeu porque é um problema de lógica, e não de
tecnologia.

Há várias possíveis soluções, mas nenhuma é imediata.

Creio que a melhor delas (num SGDB) é adotar o sistema de reserva.

Ao iniciar uma venda, você NÃO abre uma transação, e assim que os produtos
forem adiconados à sua "possível" venda, você adiciona  um registro (com
auto-commit) numa tabela de reservas, sem chave primária, mas que possua um
campo identificação para saber a quem foi reservado (exemplo: vendedor,
cliente, produto e quantidade).
Ao fechar a venda, inicia-se a transação (com lock), gera o cabeçalho,
grava-se os itens, atualiza-se o estoque e commita a transação, finalmente
apague os registros incluídos na tabela de reserva.

[s]

==========================
Eduardo Jedliczka
Gerasoft Informática
Apucarana - Pr
==========================

----- Original Message ----- 
From: "Evandro Paloschi" <epaloschi em yahoo.com.br>
To: <lista em firebase.com.br>
Sent: Monday, February 21, 2005 11:53 PM
Subject: [firebase-br] Dead lock em transações


> Esta mensagem já foi postada na lista mas até agora não obtivemos uma
resposta que solucionasse nosso problema:
>
> Usamos dbExpress com delphi 7.0 acessando firebird 1.0
> Na nossa aplicação de venda através de cupom fical abrimos uma transação,
gravamos o cabeçalho a venda, atualizamos uma tabela de vendas ativas,
gravamos os itens da venda, a fatura e por fim confirmamos a
transação(commit). Qdo duas ou mais vendas forem efetuadas de maneira
simultanea
> ocorre dead lock.
>
> Nos foi dito de setar REC VERSION, mas no DBEXPRESS não localizamos
> esta funcionalidade. É possível trabalhar com transações da maneira que
estruturamos nosso processo???
>
> Obrigado
> Evandro
>
>
> ---------------------------------
> Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador do
Yahoo! agora.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>





Mais detalhes sobre a lista de discussão lista