[firebase-br] Aviso de conflito de registro no interbase 7.0.1
Fortes Marcelo
marcelosoftware em yahoo.com.br
Qui Jan 26 20:48:50 -03 2006
Você tem que checar a a configuração de resolução de travamento de transação do sua classe de controle de transações ou do seu dataset conforme o componente de acesso que você usar, acredito que você esteja usando o IBX.
Se estiver configurada a transação para NOWAIT as outras transações irão retornar um erro imediatamente ao tentar fazer um update em um registro ou linha que está sendo utilizada por uma transação mais antiga.
O que deve estar acontecendo, eu suponho, é que você tem suas transações configuradas como WAIT.
Se o travamento estiver configurado como WAIT as outras transações irão esperar até a primeira transação finalizar então irá prosseguir.
Observe, que não são os componentes ou as classes de acesso que definem isso. Tudo é gerência do InterBase. Os componentes dão a interface de controle de como gerir as transações.
Sugiro que estude bem e compreenda na íntegra o modelo de concorrência e travamento (Lock) do InterBase que ó o mesmo do Firebird, garante com certeza até uma aplicação mais rápida e segura.
Estude sobre:
Resolução de travamento e Modos de acesso:
concurrency (snapshot), consistency (table stability), write, read, wait, nowait.
O Cantu Escreveu um artigo excelente sobre as transações so site dele, tem uma do Claudio Valderrama que explica bem também: http://www.firebase.com.br/fb/artigo.php?id=232
Bill Todd da Borland InterBase TeamB explana em detalhes (em inglês):
http://bdn.borland.com/borcon2004/article/paper/0,1963,32280,00.html
Marcelo Fortes.
Marcos Angeloni <marcos.rossano em gmail.com> escreveu:
Pessoal,
estou enfrentando um problema com o interbase quanto a avisar quando um
mesmo registro está sendo usado por mais de um usuário.
acontece que o interbase nao avisa que está dando o conflito em modo de
execução no cliente(usuario) com o executável do sistema.
por exemplo:
Quando um usuario vai fazer uma movimentação de caixa na empresa e ao
mesmo tempo outro usuário faz uma venda onde esta venda inclui um movimento
de caixa(pagamento com entrada). Ao tentar gravar a venda acontece erro de
conflito de chave primária ou de registro locado(lock).
isso eu descobri debugando a aplicação pelo delphi.
O que fazer para que o interbase avise que existe o conflito de registro e o
conflito de chave primária?
Obrigado;
______________________________________________
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
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
---------------------------------
Yahoo! doce lar. Faça do Yahoo! sua homepage.
Mais detalhes sobre a lista de discussão lista