[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