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

Andrei Luís compuvale.software em gmail.com
Ter Ago 22 14:27:10 -03 2006


Retirado do livro Dominando Firebird, pág 348:

"Geradores trabalham fora do controle da transação e, assim que você
possuir esse número, ele é seu. ... Se o usuário decidir cancelar o
trabalho, não há nada a ser desfeito no servidor."

[]
Andrei

Em 22/08/06, Oleber_itajai<oleber_itajai em yahoo.com.br> escreveu:
> 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




Mais detalhes sobre a lista de discussão lista