Fórum Do que vale autoincremento se não é autodecremento? #271253
07/03/2005
0
Cada tabela possui um campo integer chave primária e lógico, auto incremento também...
Sei também que em cada tabela, se eu eliminar o campo auto incremento eu poderei usar outro campo tipo string como chave primária...
Hipoteticamente sabemos que, se postarmos 3 registros será gerado o: 1-2-3 (incremento)
Agora, se deletarmos o ítem 2 fica: 1-3, ou seja, forma-se uma sequência disforme e não é realizada uma reordenção numérica: Deveria ficar 1-2. E para existir uma reordenção ... só com um scan na base toda... tarefa que está radicalmente descartada à ser feita, pelo simples motivo de ter que percorrer toda a Base...
Gostaria de conselhos sobre isso...
Nerdex
Curtir tópico
+ 0Posts
07/03/2005
Lucianopimenta
Essa dúvida eh muito comum. Imagine que o banco faça o que vc quer, reordenar para 1-2, os registros 1-2-3 quando vc deletar o 2, por exemplo. Mas e se essa tabela fizer referencia a outra e esse código for uma chave estrangeira em outra tabela, a reordenação tbm deverá ocorrer nessas tabelas, ou seja, muito processamento.
Então sempre será melhor vc ter uma tabela com os registros 1-3-4-6-7-9, mas que está relacionada corretamente com outras.
Espero ter sido claro pra responder a sua dúvida.
Gostei + 0
07/03/2005
Maurício Santos
Qual a real necessidade de se aproveitar um número já excluido?
Maurício
Gostei + 0
07/03/2005
Nerdex
Maurício para mim é uma questão de indexação, qualidade, harmonia e performance... concordo claramente de que um número já excluído não é mais aproveitável... mas praticamete, eu não gosto da idéia da existência de um queijo suíço ou um HD com dados completamente fragmentado...
Acredito que o auto-incremento cai bem para aplicações no comércio: Tipo emissão de nota fiscal e vendas de produtos. Fatos que certamente não serão eliminados... e se for, somente em um balanço anual... de uma loja, no caso... entende...
Gostei + 0
07/03/2005
Beppe
Gostei + 0
07/03/2005
Bruno Belchior
Gostei + 0
07/03/2005
Bon Jovi
CREATE TABLE TABELA
(
ID_TABELA DECIMAL(5) NOT NULL PRIMARY KEY, /* nunca alterar */
NUM_ORDEM DECIMAL(5) NOT NULL UNIQUE /* reorganize a vontade */
)
Gostei + 0
08/03/2005
Carlosrm
obrigado. Sua sugestão foi ótima também para mim!
carlosrm :wink:
Gostei + 0
08/03/2005
Nerdex
Solução simples, amigável e importantíssima...
Gostei + 0
08/03/2005
Bruno_orderby
particularmente não gosto de escluir meus dados da tabela, pro isso tenho sempre um campo chamado excluido do tipo char que altero pra S ou N se o registro foi ´deletado´ pelo usuario ou não, e para visualização dos dados pra não ficar lento não exibo tabelas apenas as views.....
Assim sempre mantenho integridade, com a opção de uma futura restauração em dados que o cliente queira novamento sem ter de fazer backup......
Abraço......
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)