Re: [firebase-br] Violação de chaveprimária

nosbori em yahoo.com.br nosbori em yahoo.com.br
Qua Fev 14 09:28:30 -03 2007


Pessoal,

Só pra finalizar o alvoroço... eu estava com problemas porque eu não 
utilizava o Generator e nem tinha conhecimento sobre o mesmo...

Ele resolveu meu problema...

Agradeço a todos que me ajudaram..

Obrigado

Robson

----- Original Message ----- 
From: "Mario" <brujeria em task.com.br>
To: <jorgehenrique em americamoveis.com>; "FireBase" <lista em firebase.com.br>
Sent: Wednesday, February 14, 2007 7:22 AM
Subject: Re: [firebase-br] Violação de chaveprimária


Ola,

sinceramente não estou entendendo todo este alvoroço.

1. Voce monta seu novo registro usando GEN_ID(GENERATOR,1)
2. As referencias a este numero use GEN_ID(GENERATOR,0).
3. Com todas as SQL juntas execute um Commit/Rollback.

Pronto, não precisa preocupar com nada.
Ainda acho q travar registro deve ser para outros casos, e nao devido ao
generator pois este já tem a função GEN_ID para fazer o controle.

Valeu
Mario H.


Em Qua, 2007-02-14 às 07:56 -0300, Jorge Henrique escreveu:
> 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
> >
> >
> >
>
> ______________________________________________
> 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


______________________________________________
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 


		
_______________________________________________________ 
Yahoo! Mail - Sempre a melhor opção para você! 
Experimente já e veja as novidades. 
http://br.yahoo.com/mailbeta/tudonovo/
 






Mais detalhes sobre a lista de discussão lista