Re: [firebase-br] Correção do que o FÁBIO disse sobre o AUTOINCREMENTO. Erradamente.

Fabio clicklist em gmail.com
Ter Abr 11 10:40:00 -03 2006


Carlos

Muito obrigado por suas informações, isto tudo eu já sabia e concordo com
TUDO o que vc falou, exceto (3):

3) ATENÇÃO : O campo Autoincremento é usado para LIGAR tables
MESTRE-DETALHE.

Isto está errado, onde vc viu isso? Se vc fizer isto vai ter um trabalhão
para gerenciar o relacionamento master-detail. Aconselho a usar o
autoincremento somente para o que foi desenvolvido "GERAR UM NOVO VALOR
UNICO PARA O NOVO REGISTRO, INCREMENTADO DE ACORDO COM A SUA ESPECIFICAÇÃO,
E QUE NÃO TENHA SIDO ANTERIORMENTE USADO".

Quanto às outras informações, eu apenas estou com algumas dúvidas, vc pode
me ajudar?

1) Campo Auto-Incremento, sem furos, É E SEMPRE FOI DESNECESSÁRIO (me PROVEM
o contrário !);

O que vc quer dizer com isso? Nem exisite Campo AutoIncremento sem furos,
como podemos julgar se é necessario ou não?

Quanto aos items (C) e (D), são afirmações verdadeiras, mas o que tem a ver
com Campos Autoincremento? Alguem aqui faz SELECT MAX para contar registros?


De qualquer forma, se vc tiver mais informações ÚTEIS, estarei feliz em
recebê-las!

[]'s
Fábio




On 4/10/06, Carlos Antônio Ferreira da Silva <carlosmuzambinho em yahoo.com.br>
wrote:
>
> CARO FÁBIO :
> Você disse : "Toda esta gambiarra seria evitada (ou amenizada) se ouvessem
> campos auto-incremento no Firebird..."
> ======================================================================
> Por favor, LEIA ABAIXO e entenda sobre o que mencionou ERRADAMENTE no seu
> email :
> ======================================================================
> 1) Campo Auto-Incremento, sem furos, É E SEMPRE FOI DESNECESSÁRIO (me
> PROVEM
> o contrário !);
>
> 2) QUALQUER B.D. que você TENHA o campo "auto-incremento", se você incluir
> um registro,
> e logo depois EXCLUÍ-LO, a table ficará SEMPRE com um "furo" . Qual o
> problema ? NENHUM.
>
> 3) ATENÇÃO : O campo Autoincremento é usado para LIGAR tables
> MESTRE-DETALHE.
>
> a) Para Núm. de N.F. mod 1, por exemplo o usuário deve DIGITAR o NÚM.
> b) Para Núm. de N.F. Nº COO/impressora fiscal , por exemplo o usuário deve
> Buscar o Nº COO e gravar ;
>
> c) Quando quiser saber um TOTAL de registros, NUNCA baseie em um campo, e
> sim
> num "SELECT COUNT(*) from TABLE" ;
> d) Não é necessário o usuário "ficar vendo" o número gerado, a não ser em
> BUSCAS
> por este número, por exemplo, cód.cliente ;
>
> Por fim, fica a mensagem :
> O FIREBIRD TEM O MELHOR MODO DE AUTO-INCREMENTO, USANDO
> TRIGGER + GENERATOR, O QUE O IBEXPERT FACILITA MUITO sua criação
>
> Exemplo :
> Se você quer transferir de uma TABLE do PARADOX, que usa autoincremento
> para
> o FB,
> basta enviar o valor de cada campo autoincremento que o FB evitará o
> incremento.
> Ao final, basta atualizar o GENERATOR.
> QUAL OUTRO B.D. PERMITE isto, usando campo autoincremento ??? Desconheço.
>
> ASS :
> Carlos Antônio Ferreira da Silva
> => Analista de Sistemas.
> => Professor LICENCIADO de Informática, incluindo as disciplinas :
> ** Modelagem de Dados, SQL, DELPHI, Lóg. de progr. com Pascal, nálise
> Estruturada de Sistemas.
>
> -----Mensagem Original-----
> De: "Fabio" <clicklist em gmail.com>
> Para: "FireBase" <lista em firebase.com.br>
> Enviada em: sexta-feira, 7 de abril de 2006 11:40
> Assunto: Re: [firebase-br] Aos interessados: O
> melhorAutoincrementosequencial
>
>
> Lá vem as pedras :-)
>
> Toda esta gambiarra seria evitada (ou amenizada) se ouvessem campos
> auto-incremento no Firebird...
>
> []'s
> Fabio
>
>
> On 4/7/06, Josauro S.J. <josauro em casasoft.inf.br> wrote:
> >
> > Em definitivo, para controlar bem a sequencia de códigos sem deixar furo
> > uso
> > uma tabela de registro mestre
> >
> >
> > TABELA MESTRE
> > NOMETABELA, NOMEDOCCAMPO, SEQUENCIA
> >
> >
> > Em uma transação separada, pode ser no inicio da inclusão, chama se
> > GetNovoCodigo, le se uma procedure que retorna o proximo codigo a ser
> > usado
> > da tabela/campo especificado, essa procedure procura no na tabela mestre
> o
> > conjunto tabela/campo se nao existir ou existir apenas um registro,
> > incrementa esse numero SEQUENCIA, caso existe mais de um  registro
> (sinal
> > de
> > que foi apagado algum registro na tabela de referencia) ai usa se a
> > SEQUENCIA maior e apaga esse registro da tabela MESTRE.
> >
> > Nos processos de exclusão, ou cancelamento da inclusão, chama se a
> > procedure
> > DevolveCodigo, o qual grava na tabela MESTRE o conjunto Tabela/Campo e
> na
> > SEQUENCIA coloca-se o codigo a ser reaproveitado, onde será pego na
> > próxima
> > Inclusão.
> >
> > Digo com certeza, funciona muito bem, para o propósito de
> reaproveitamento
> > de números.
> >
> >
> > (Este email foi verificado contra a presença de vírus, antes de ser
> > enviado, pelo nosso sistema de FireWall, entre em contato com a CasaSoft
> (
> > casasoft em casasoft.inf.br) e instale um em sua Empresa livre se de
> intrusos
> > e mantenha seus sistemas e clientes livres de vírus.)
> >
> >
> > ______________________________________________
> > 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
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> >
> ______________________________________________
> 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
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ______________________________________________
> 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
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista