[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