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

Walter Cruz walter.php em gmail.com
Qua Fev 14 23:22:22 -03 2007


Só completando: no PostgreSQL tem sequências .

[]'s
- Walter

On 2/13/07, Kleber Caneva <kdcc em terra.com.br> wrote:
> Generator é do FB..
>
> No SQL Server vc tem Campo Auto-Incremental
>
> No Oracle vc tem o SEQUENCE que é parecido com o Generator.
>
> []´s
>
> Kléber Caneva
>
>
> ----- Original Message -----
> From: <nosbori em yahoo.com.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Tuesday, February 13, 2007 4:52 PM
> Subject: Re: [firebase-br] Violação de chave primária
>
>
> Olá José, tubo bem?
>
> Até então eu não conhecia o Generator. Realmente deu certo.
>
> O Generator é do Firebird ou é uma função que tenho em qualquer banco de
> dados?
>
> Obrigado pela solução...
>
> Robson
>
> ----- Original Message -----
> From: "José Aparecido da Silva" <joseasilva em bol.com.br>
> To: "'FireBase'" <lista em firebase.com.br>
> Sent: Tuesday, February 13, 2007 4:17 PM
> Subject: RES: [firebase-br] Violação de chave primária
>
>
> Use generator que com certeza o seu problema terminará.
>
> Crie ele no seu banco;
> Create generator NomeDoSeuGenerator;
>
> Atribua um valor a ele:
> Set generator NomeDoSeuGenerator to 0;
>
> Chame o valor com: gen_id(NomeDoSeuGenerator,ValorAAcrescentar);
>
> Se por exemplo for um sql de atualização:
>
> Insert into Tabela (id,descrição,outrainformacao) values
> (gen_id(NomeDoSeuGenerator,1),'descricao','outra informacao');
>
> O Generator irá assegurar que ninguém ira ter o mesmo valor.
>
> Se você quiser atribuir o valor antes de inserir os dados, recupere o valor
> com uma query assim: (supondo que você usa delphi)
>
> Query.sql.add('select gen_id(NomeDoSeuGenerator,1) as NR from RDB$DATABASE
> ');
> Query.open;
>
> NR:= query.FieldByName('NR').asInteger;
>
> E usa do jeito que voce quizer.
>
> Outro modo de fazer é criando um Trigger de Before Insert onde você verifica
> atualiza o valor da sua chave primaria:
> ChavePrimaria = gen_id(NomedoSeuGenerator,1);
>
> Espero que com essas informações você possa resolver o seu problema.
>
> Abraços
> Jose Aparecido da Silva
>
>
>
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
> nome de nosbori em yahoo.com.br
> Enviada em: terça-feira, 13 de fevereiro de 2007 10:47
> Para: FireBase
> Assunto: [firebase-br] Violação de chave primária
>
> 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
>
> --
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.5.441 / Virus Database: 268.17.37/682 - Release Date: 12/2/2007
> 13:23
>
>
> --
> No virus found in this outgoing message.
> Checked by AVG Free Edition.
> Version: 7.5.441 / Virus Database: 268.17.37/682 - Release Date: 12/2/2007
> 13:23
>
>
>
> ______________________________________________
> 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/
>
>
>
>
> ______________________________________________
> 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
>
> E-mail classificado pelo Identificador de Spam Inteligente Terra.
> Para alterar a categoria classificada, visite
> http://mail.terra.com.br/protected_email/imail/imail.cgi?+_u=kdcc&_l=1,1171392951.351462.9974.curepipe.hst.terra.com.br,7822,Des15,Des15
>
> Esta mensagem foi verificada pelo E-mail Protegido Terra.
> Scan engine: McAfee VirusScan / Atualizado em 12/02/2007 / Versão:
> 5.1.00/4961
> Proteja o seu e-mail Terra: http://mail.terra.com.br/
>
>
>
> ______________________________________________
> 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