[firebase-br] Auto Incremento

Renato Deggau rdeggau em gmail.com
Sáb Abr 21 19:09:49 -03 2007


Paulo,

isso depende do conceito que vai ser usado no sistema; SE o seu
sistema NUNCA terá exclusão de registros, como voce propoe,  a 1ª
opção pode funcionar;
a 2ª pode provocar erro no caso de 2 ou mais usuarios simultaneamente
estarem inserindo um registro: os 2 terão o mesmo codigo e provocará
erro.

Mas este assunto está fugindo da lista; para o Firebird a "melhor" e
mais segura solução é usar GENERATOR disparado por uma trigger no
insert, o que garantirá a consistencia dos teus dados

Renato Deggau

On 4/21/07, Paulo Portella <pportellaa em hotmail.com> wrote:
> Mais uma vez peco humildes desculpas aos moderadores da lista:
>
> Gente, Informacao nunca eh demais, entao pq nao resolvemos isso evitando-se o DELETE da tabela. ?Ha casos e ""casos"" pra isso, mas em sua maioria uma opcao seria->Marca-lo como Ativo/Inativo, fazendo assim,  a informacao (registro na tabela) continuarah lah, apenas Inativado.
>
> Odeio essa expressao-> DELETAR/APAGAR.
> Lembre-se Quem tem UM Tem Nenhum, Quem tem Dois "talvez" tem Um.
>
> Enfim. Existem opcoes, Se ele quer fazer isso de dentro do executavel, entao segue exemplo:
> 1a.Opcao)
>
> Evento OnNewRecord da tabela:dm.cdsclientesCODIGO.Value:=dm.cdsClientes.RecordCount+1; -> Caso ele aceite a opcao de NAO DELETAR o registro, apenas marca-lo como Ativo/Inativo
>
>
> 2a.Opcao)
> uma funcao pra "acharr" o valor do campo em questao:
> var
>   NovoCodigo : Integer;
>   IndiceAtual : String;
> begin    IndiceAtual:=dm.cdsClientes.IndexFieldNames;
>     dm.cdsClientes.IndexFieldNames:='CODIGO';    dm.cdsClientes.Last;    NovoCodigo:=dm.cdscdsClientesCODIGO.Value+1;
>     dm.cdsClientes.IndexFieldNames:=IndiceAtual;
> end;
>
> []s a todos
> Pportellaa.
>
>
>
> > Date: Sat, 21 Apr 2007 15:38:55 -0300> From: rdeggau em gmail.com> To: lista em firebase.com.br> Subject: Re: [firebase-br] Auto Incremento> > Reijanio:> > suponha que voce tenha cadastrado 5 clientes (1,2,3,4 e 5); dai pela> identificacao de que o cliente 4 náo deveria ter sido cadastrado, voce> o exclui - agora voce tem 4 clientes; posteriormente vai incluir um> novo cliente; pelo seu codigo ele receberia o codigo 5 e este já> existe no sistema o que provocaria violaçao de chave primaria> > Renato Deggau> > On 4/20/07, Reijanio Nunes Ribeiro <rnribeiro em gmail.com> wrote:> > se vc usar direto no evento onnewrecord no clientdataset n seria mais facil> > não?> > ClientesIDcli.value := clientes.recordcount + 1> >> > Em 20/04/07, Marcelo Castro - [www.ligteltelecom.com.br] <> > marcelo.castro em ligteltelecom.com.br> escreveu:> > >> > > Amigos;> > >> > > Eu estou usando um generator para criar auto incremento.> > >> > > Seria possível fazer eu fazer esse auto incremento direto no banco.> > >> > > Porém estou usando uma query para isso.> > >> > > Estou fazendo assim pelo delphi.> > >> > > procedure TDM_Server.DspProdutosBeforeUpdateRecord(Sender: TObject;> > > SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;> > > UpdateKind: TUpdateKind; var Applied: Boolean);> > > begin> > > IF UpdateKind = ukInsert THEN> > > BEGIN> > > if SourceDS = QryProdutos THEN> > > BEGIN> > > QryGenProdutos.OPEN;> > >> > > TRY> > > FNUMPROD := QryGenProdutos.fieldbyname> > > ('PROD_CODIGO_NOVO').AsInteger;> > > finally> > >> > > QryGenProdutos.Close;> > >> > > end;> > > DeltaDS.fieldbyname('PROD_CODIGO').NewValue := FnumPROD;> > >> > > end;> > > end;> > > end;> > > ______________________________________________> > > 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> > >> > ______________________________________________> > 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> >> > ______________________________________________> 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
> _________________________________________________________________
> O Windows Live Spaces já chegou! É fácil criar o seu próprio Web site pessoal.
> http://spaces.live.com/signup.aspx
> ______________________________________________
> 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