Fórum Bloquear registro #42930

09/03/2004

0

Tenho que desenvolver um programa simples para vendas de produtos em congressos, e para o mesmo tenho que utilizar o interbase 6 como bando de dados. Não tenho muita experiência com este banco de dados e estou tendo algumas dúvidas. Ao vender um determinado produto, tenho que baixa-lo no estoque imediatamente para que o saldo esteja sempre atualizado se por motivo outro vendedor tentar vender este mesmo produto. Meu maior problema é que o interbase trabalha com sistema de travamento otimista, e por exemplo, dois vendedores acessam um determinado produto, e no estoque consta um saldo de 100, se os dois vendessem 100 e confimassem a venda ao mesmo tempo o que aconteceria ? Num sistema de travamento pessimista como o Clipper, o segundo vendedor só conseguiria vender o produto após o primeiro liberar o produto. Como resolver este problema no Interbase ? Gostaria que alguém pudesse me ajudar. Todas as sugestões são bem vindas.

Um abraço e obrigado desde já.

m_gab.


M_gab

M_gab

Responder

Posts

10/03/2004

Afarias

Não sei se ´bloqueios pessimistas´ seria a melhor solução para vc...

MAS... você pode sim usar ´bloqueios pessimistas´ no IB, basta editar o registro e postar! o registro fica bloqueado até o commit ou rollback!

ex:

Query.Edit;
Query.CampoTal.Value := Query.CampoTal.Value;
Post; // aqui o registro é bloqueado


Bom, no Fb 1.5 vc pode fazer isso explicitamente usando SELECT FOR UPDATE e SELECT FOR UPDATE WITH LOCK ... dê uma olhada no RELEASE NOTES do FB 1.5


T+


Responder

Gostei + 0

11/03/2004

M_gab

Não sei se ´bloqueios pessimistas´ seria a melhor solução para vc...

Poderia dar uma sugestão de como fazer ?

Agradeço desde já.

m_gab.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar