[firebase-br] Violação de chave primária
Jorge Henrique
jorgehenrique em americamoveis.com
Qua Fev 14 08:56:38 -03 2007
Isso indica que o seu controle transacional não está muito correto. Se
vc não tem uma transação especifica para quando pegar o valor do
generator, provavelmente seria esse o seu problema. Faço dessa forma que
vc fez em emissão de notas fiscais, onde o numero da NF não pode ter
furos e tenho muitos usuarios emitindo nf's durante o dia, inclusive de
empresas diferentes (no mesmo banco de dados) e nunca tive problema
algum. O que faço é simples:
1-Inicio a transação
2-Pego o valor atual do generator
3-Adiciono +1
4-Commit
Detalhe: a transação tem q travar o registro no inicio da operação, isto
é, o primeiro a abrir a transação trava o registro e as outras estações
concorrentes devem esperar o término da mesma para prosseguirem. Assim
não tem como dar problema de PK's.
Espero ter ajudado,
[]'s
nosbori em yahoo.com.br escreveu:
> Bom dia pessoal,
>
> estou com um problema:
>
> Tenho um mesmo sistema instalado em diversas máquinas. Esse sistema em determinada hora do dia recebe um volume muito grande de informações.
>
> Eu tenho uma tabela no meu banco de dados que armazena o Sequence de uma derminada tabela, e o problema que estou tento é que quando várias máquinas tentam salvar o registro na mesma tabela eles pegam o mesmo ID e ocorre erro de violação de chave primária.
>
> Exemplo:
>
> Vamos imaginar que tenho as seguintes tabelas:
>
> TAB_APONTAMENTO
>
> TAB_SEQUENCE
>
> onde essa TAB_SEQUENCE controla os ID's corrente de todas as tabelas do meu banco de dados....
>
> Quando eu vou inserir um registro na TAB_APONTAMENTO o sistema consulta o ultimo ID na TAB_SEQUENCE e insere o registro.
>
> Problemas: Quando mais de um usuário tenta realizar um apontameto ao mesmo tempo... o sistema que estão instalado em máquinas distintas, pegam o mesmo ID e ocorre o erro...
>
> Detalhe: Cada vez que eu consulto o ultimo ID de uma tabela, já dou um UPDATE com o valor que achei + 1....
>
> Se alguém puder me ajudar.... eu agradeço..
>
> Robson
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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
>
>
>
Mais detalhes sobre a lista de discussão lista