Re: [firebase-br] Erro no Gerador de Chave primária

Magno System magno em speet.com.br
Ter Ago 22 18:54:52 -03 2006


Pois é o tópico que escrevi foi desaconselhando o uso de "sql pura" sem a 
intervenção de generators. O email anterior é o que se deve evitar fazer e 
não fazer.



----- Original Message ----- 
From: "Andrei Luís" <compuvale.software em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, August 22, 2006 6:24 PM
Subject: Re: [firebase-br] Erro no Gerador de Chave primária


> Isso é bastante desaconselhável, mesmo com trigger pode ter problema.
>
> Por que não usar Generators se é pra isso que eles foram feitos?
>
> []
> Andrei
>
> Em 22/08/06, Magno System<magno em speet.com.br> escreveu:
>> Pessoal quando me refiri a usar sql me refiri a algo do tipo: SELECT
>> MAX(CODIGO) FROM TABELA INTO :VARIAVEL. Eu disse usar sql sem a 
>> interveção
>> de Generators.
>>
>>
>> ----- Original Message -----
>> From: "Oleber_itajai" <oleber_itajai em yahoo.com.br>
>> To: "FireBase" <lista em firebase.com.br>
>> Sent: Tuesday, August 22, 2006 2:12 PM
>> Subject: Re: [firebase-br] Erro no Gerador de Chave primária
>>
>>
>> > tambem acho, mas foi postada uma mensagem  de Magno System assim :
>> >
>> > Eu te aconselharia usar triggers. Se caso houver uma transação 
>> > concorrente
>> > (mais de 1 computador inserindo dados nesta tabela ao mesmo tempo),
>> > corre-se
>> > o risco do sql gerar o mesmo número para os dois. Já com trigger não
>> > existe
>> > este risco.
>> >
>> >
>> > E ai ?
>> >
>> > O q fazer ?
>> >
>> >
>> > []'s
>> >
>> >
>> > ----- Original Message -----
>> > From: "Mario" <brujeria em task.com.br>
>> > To: "FireBase" <lista em firebase.com.br>
>> > Sent: Tuesday, August 22, 2006 1:46 PM
>> > Subject: Re: [firebase-br] Erro no Gerador de Chave primária
>> >
>> >
>> > Acho que sempre usando o GEN_ID() fica "impossivel" um key violation,
>> > independente da forma que você a usa, por trigger, código, sql...
>> > Valeu
>> > Mario
>> >
>> > On Ter, 2006-08-22 at 13:21 -0300, Oleber_itajai wrote:
>> >> eu pego o codigo dessa maneira:
>> >>
>> >> SELECT GEN_ID(noem do generator,1) FROM RDB$DATABASE INTO :VALOR;
>> >>
>> >> ja fiz um teste rigoroso em rende,  deixei duas maquinas em loop
>> > cadastrando
>> >> 1000 registros automaticos, e naum me gerou nehum key violation,  e 
>> >> nem
>> >> pulou ordem de codigo. Simplesmente me retornou a mesma segurança que 
>> >> um
>> >> Trigger.
>> >>
>> >> Se alguem tiver mais alguma opinião...
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> ----- Original Message -----
>> >> From: "Rafael Rosso" <rafrosso em gmail.com>
>> >> To: "FireBase" <lista em firebase.com.br>
>> >> Sent: Tuesday, August 22, 2006 9:08 AM
>> >> Subject: Re: [firebase-br] Erro no Gerador de Chave primária
>> >>
>> >>
>> >> é muito arriscado trazer o código antes, pode gerar problemas se for
>> >> usado
>> >> em rede.
>> >>
>> >> Em 21/08/06, Magno System <magno em speet.com.br> escreveu:
>> >> >
>> >> > Eu te aconselharia usar triggers. Se caso houver uma transação
>> > concorrente
>> >> > (mais de 1 computador inserindo dados nesta tabela ao mesmo tempo),
>> >> > corre-se
>> >> > o risco do sql gerar o mesmo número para os dois. Já com trigger não
>> >> > existe
>> >> > este risco.
>> >> >
>> >> >
>> >> >
>> >> > ----- Original Message -----
>> >> > From: "Roberto" <roberto.roflores em gmail.com>
>> >> > To: "FireBase" <lista em firebase.com.br>
>> >> > Sent: Monday, August 21, 2006 9:18 PM
>> >> > Subject: Re: [firebase-br] Erro no Gerador de Chave primária
>> >> >
>> >> >
>> >> > >
>> >> > >
>> >> > >>Você provavelmente deve ter adicionado os campos da tabela no seu
>> >> > >>componente
>> >> > >>de acesso. Selecione o campo com chave primária no componente de
>> > acesso
>> >> > e
>> >> > >>marque a propriedade required como false.
>> >> > >
>> >> > > Agradeço todas as respostas.Sou do tempo do DBase III e Clipper 
>> >> > > .Mais
>> >> > > recentemente usava o mal falado PAradox que ficou muito lento em
>> >> > > rede.
>> >> > > Estou
>> >> > > aprendendo Firebird .
>> >> > > Repeti tudo novamente e não deu erro mas sem usar o SQLManager ( 
>> >> > > Esse
>> >> > > programa já me trancou o acesso ao firebird negando a senha
>> > 'masterkey'
>> >> > e
>> >> > > tb
>> >> > > estava dando esse erro ). Usando só o IBOConsole eu consegui.
>> >> > > GOstei muito da sugestão de trazer o número gerado via SQL antes 
>> >> > > de
>> >> > gravar
>> >> > > ( no  caso eu conheço a chave primária antes do post) e depois 
>> >> > > gravar
>> >> > > direto
>> >> > > sem trigger.
>> >> > >
>> >> > > Roberto Flores
>> >> > >
>> >> > > Caxias do Sul
>> >> > >
>> >> > >
>> >> > >
>> >> > > ----- Original Message -----
>> >> > > From: "Roberto" <roberto.roflores em gmail.com>
>> >> > > To: "FireBase" <lista em firebase.com.br>
>> >> > > Sent: Monday, August 21, 2006 2:02 PM
>> >> > > Subject: [firebase-br] Erro no Gerador de Chave primária
>> >> > >
>> >> > >
>> >> > >> Criei uma tabela ( via IbConsole) clientes sendo CodCliente
>> >> > >> ,integer,
>> >> > >> primary key.
>> >> > >> Tenho esse triger no evento Before insert:
>> >> > >> BI_CLIENTES_CODCLIENTE
>> >> > >> AS
>> >> > >> BEGIN
>> >> > >>  IF (NEW.CODCLIENTE IS NULL) THEN
>> >> > >>      NEW.CODCLIENTE = GEN_ID(CLIENTES_CODCLIENTE_GEN, 1);
>> >> > >> END
>> >> > >> Porque qdo deixo o campo CLIENTE em NULL dá erro ( 'Campo 
>> >> > >> CodCliente
>> >> > não
>> >> > >> pode ser nulo').
>> >> > >> Isso se repete nas outras tabelas com a chave primária.
>> >> > >> Mas pelo que aprendi o gerador é para isso né?
>> >> > >>
>> >> > >> Roberto Flores
>> >> > >>
>> >> > >> Caxias do SUL
>
> ______________________________________________
> 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.1.405 / Virus Database: 268.11.5/425 - Release Date: 22/08/2006
> 





Mais detalhes sobre a lista de discussão lista