[firebase-br] Muito lentooClientDataSet.ApplyUpdates(0)noFirebird 1.5...

Thiago - Enter&Plug Software jeandeadlucky em yahoo.com.br
Sex Fev 11 13:09:15 -03 2005


Olha, técninacamente não porque a minha a "UpdateRecordAutoInc" pega o valor 
via generator, e como sempre será feito em uma única sessão (num servidor 
remoto), não tém como ter duplicidade do valor no registro.

Para o caso de erro, eu mando um raise de dentro da "UpdateRecordAutoInc", o 
que pára a gravação do registro. e por medida de "segurança" escrevo nas 
trigger algo como


if ((new.codigo is null) or (new.codigo = -1)) then
  new.codigo = gen_id(gen_codigo,1)

Ae, sem erros. O que pode acontecer é ter alguns registros orfãos caso não 
dê o exception dentro do UpdateRecordAutoInc... o que é impossível.

[]'s

Francisco Thiago de Almeida
Enter&Plug Informática
Divisão: Desenvolvimento e Banco de dados
MSN: thiago em enterplug.com.br

----- Original Message ----- 
From: "Paulo R. Biazotto" <prbiazto em ig.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Thursday, February 10, 2005 4:18 PM
Subject: Re: [firebase-br] Muito 
lentooClientDataSet.ApplyUpdates(0)noFirebird 1.5...


> Talvez essa rotina do Thiago resolva o problema que reportei ontém com
> código auto-incremental, mas me ficou uma dúvida se existe alguma chance 
> de
> dois usuarios criarem um registro ao mesmo tempo e ficarem com o mesmo
> código. Se alguém puder me esclarecer essa dúvida eu agradeço muito.
>
> BeforeUpdateRecord
> const
>  {$J+} // Permite constante tipada
>  qg:Integer = -1;
>  {$J-}// Des-permite :D
> begin
>  if UpdateKind in [ukInsert] then //Se estiver inserindo
>  begin
>    if SourceDS = sqlCad_Condicao then // Estou atualizando o Mestre
>    begin
>      UpdateRecordAutoInc(Sender,SourceDS,DeltaDS,UpdateKind,Applied,
>      DeltaDS.FieldByName('CCOND_CODIGO').Index); // Pego o proximo valor
> (auto Incremento)
>      qg := DeltaDS.FieldByName('CCOND_CODIGO').NewValue // Jogo o valor na
> minha constante
>    end
>    else if qg <> -1 then // se foi informado um valor (no auto inc em caso
> de erro, é retornando um -1)
>      DeltaDS.FieldByName('CCOND_CODIGO').NewValue := qg; //Jogo o valor da
> chave aqui
>   end;
> end;
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço 
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> 








Mais detalhes sobre a lista de discussão lista