Jump to content


Photo

Auto_increment


  • Faça o login para participar
14 replies to this topic

#1 Alexx Ares

Alexx Ares

    Doutor

  • Usuários
  • 921 posts
  • Sexo:Masculino
  • Localidade:Santos - SP

Posted 27/07/2004, 09:12

Opa, blz?

Dúvida básica: Tem alguma maneira de reordenar os numeros de uma coluna INT() tipo AUTO_INCREMENT no MySQL, para "tapar buracos" quando excluimos algum registro? :huh:

Ou, ainda reiniciar a contagem do AUTO_INCREMENT a partir de um número específico?! :o

Valeu!!

(y)
||| PENSE NISSO ||| O ser humano, dizem, deve dormir 8 horas por dia. Isso equivale a 1 terço do seu dia dormindo. Agora imagine a seguinte situação: você, com 75 anos, prestes a morrer, olha para trás e percebe que dormiu 1 terço da sua vida, ou seja, 25 anos. Cara... 25 ANOS DORMINDO !!! Se você tem menos de 25 anos, simplesmente você vai dormir mais do que viveu até hoje!!! Pense nisso... e durma menos.

#2 Marcão

Marcão

    Marcãaaaaaaaao

  • Usuários
  • 1754 posts
  • Sexo:Não informado
  • Interesses:Faixa preta de Muay-Thay<br>Faixa Roxa de Jiu-Jitsu<br>:D<br>Um dia eu chego lá

Posted 27/07/2004, 09:16

o que vem a ser "Tapar Buracos" ??
Marcão -=- PHP é coisa de MESTRE e falo mais nada -=-
Minha Foto
"Não temas,segue adiante,não olhes para trás!!
Segura na mão de
Deus e vai.."

#3 cybermix

cybermix

    andrewsmedina.com.br

  • Ex-Admins
  • 3586 posts
  • Sexo:Não informado
  • Localidade:Não sou desse planeta não!!!!
  • Interesses:python, fireworks, linux, php, flash...

Posted 27/07/2004, 09:20

o que vem a ser "Tapar Buracos" ??

ele quer usar um numero do campo que é auto incremento que foi deletado..


bom alex acho que isso nao é possivel e se for nao vejo a necessidade e acho sme logica ja que o id é usado como caracteristica unica e é somente na comparacao interna..
www.andrewsmedina.com.br

#4 Marcão

Marcão

    Marcãaaaaaaaao

  • Usuários
  • 1754 posts
  • Sexo:Não informado
  • Interesses:Faixa preta de Muay-Thay<br>Faixa Roxa de Jiu-Jitsu<br>:D<br>Um dia eu chego lá

Posted 27/07/2004, 09:23

ve se é isso:
id = 1 | produto = mouse
id = 2 | produto = teclado
id = 3 | produto = monitor

ae eu deleto teclado:
id = 1 | produto = mouse
id = 3 | produto = monitor

vc queria que ficasse:
id = 1 | produto = mouse
id = 2 | produto = monitor

????
Marcão -=- PHP é coisa de MESTRE e falo mais nada -=-
Minha Foto
"Não temas,segue adiante,não olhes para trás!!
Segura na mão de
Deus e vai.."

#5 Alexx Ares

Alexx Ares

    Doutor

  • Usuários
  • 921 posts
  • Sexo:Masculino
  • Localidade:Santos - SP

Posted 27/07/2004, 09:24

Fala Cyber!

Seguinte, é uma tabela simples, e o id é só para ordenar, tipo o primeir, o segundo, terceiro registro e assim por diante.

Tipo um "ranking", e se um registro cai fora, ous outros devem subir....

Queria saber se da pra fazer isso automaticamente, ou tem que criar uma funça para, ao deletar, dar -1 em todos os registros maiores que o deletado, ou algo assim... <_<

:lol: (y)

-------------------

Isso mesmo Marcão! (y)

Edição feita por: Alexx Ares, 27/07/2004, 09:25.

||| PENSE NISSO ||| O ser humano, dizem, deve dormir 8 horas por dia. Isso equivale a 1 terço do seu dia dormindo. Agora imagine a seguinte situação: você, com 75 anos, prestes a morrer, olha para trás e percebe que dormiu 1 terço da sua vida, ou seja, 25 anos. Cara... 25 ANOS DORMINDO !!! Se você tem menos de 25 anos, simplesmente você vai dormir mais do que viveu até hoje!!! Pense nisso... e durma menos.

#6 Marcão

Marcão

    Marcãaaaaaaaao

  • Usuários
  • 1754 posts
  • Sexo:Não informado
  • Interesses:Faixa preta de Muay-Thay<br>Faixa Roxa de Jiu-Jitsu<br>:D<br>Um dia eu chego lá

Posted 27/07/2004, 09:29

eu acho que isso não dá!!
pq tipo...
... vc cria varios id's,o banco vai incrementando!! ou seja,ele deve ter algum tipo de controle ae!!
ae,vc substituir,sei não!!
acho que não da!!
mas vc disse que é uma tabela de ranking??
vc pode fazer de outro modo:
ranking de que??
como vc ta fazendo??
Marcão -=- PHP é coisa de MESTRE e falo mais nada -=-
Minha Foto
"Não temas,segue adiante,não olhes para trás!!
Segura na mão de
Deus e vai.."

#7 cybermix

cybermix

    andrewsmedina.com.br

  • Ex-Admins
  • 3586 posts
  • Sexo:Não informado
  • Localidade:Não sou desse planeta não!!!!
  • Interesses:python, fireworks, linux, php, flash...

Posted 27/07/2004, 09:30

cara nao coloca a tabela como auto incremento, ja que tera que modificar ela direto e sim faz o incremento manualmente...

dai crie funcoes para ordenar os valores quando algum valor for mudado
www.andrewsmedina.com.br

#8 Alexx Ares

Alexx Ares

    Doutor

  • Usuários
  • 921 posts
  • Sexo:Masculino
  • Localidade:Santos - SP

Posted 27/07/2004, 09:38

É, então, assim eu sei.... só queria saber se dava pra fazer direto no MySQL...

Valeu mesmo assim! :lol: (y)
||| PENSE NISSO ||| O ser humano, dizem, deve dormir 8 horas por dia. Isso equivale a 1 terço do seu dia dormindo. Agora imagine a seguinte situação: você, com 75 anos, prestes a morrer, olha para trás e percebe que dormiu 1 terço da sua vida, ou seja, 25 anos. Cara... 25 ANOS DORMINDO !!! Se você tem menos de 25 anos, simplesmente você vai dormir mais do que viveu até hoje!!! Pense nisso... e durma menos.

#9 Marcão

Marcão

    Marcãaaaaaaaao

  • Usuários
  • 1754 posts
  • Sexo:Não informado
  • Interesses:Faixa preta de Muay-Thay<br>Faixa Roxa de Jiu-Jitsu<br>:D<br>Um dia eu chego lá

Posted 27/07/2004, 09:40

tipo...
se existe um campo ID que é autoincrement!!
se vc deletar ele e criar denovo!!
é zerado!!
mas ae os registros irão se perder!!
Marcão -=- PHP é coisa de MESTRE e falo mais nada -=-
Minha Foto
"Não temas,segue adiante,não olhes para trás!!
Segura na mão de
Deus e vai.."

#10 acao11

acao11

    12 Horas

  • Usuários
  • 166 posts
  • Sexo:Não informado
  • Interesses:PHP, Java, Linux, C, Apache, CGI/Perl, JavaScript e Delphi.

Posted 27/07/2004, 14:58

No MySQL essa operação não é possível, mas em bando de dados como o Access ou até mesmo o PostGreSQL essa operação ser torna possível...

#11 Alexx Ares

Alexx Ares

    Doutor

  • Usuários
  • 921 posts
  • Sexo:Masculino
  • Localidade:Santos - SP

Posted 27/07/2004, 22:51

Po, legal saber... mas aqui só MySQL mesmo... :lol:

E Marcão, não quero apagar tudo não pô!! :P
hehehehe...


Mas dexa quieto, já que não dá pra automatizar fiz um scriptzinho para subtrair 1 de todos os IDs ao deletar um registro e desabilitei o AUTO_INCREMENT pois não adianta subtrair somente, pois ao adicionar um novo registro ele vai pelo último número que tinha gravado, ele não conta o valor mais alto do campo e adiciona...
Ou seja, manti um INT() comum sem AUTO_INCREMENT e ao cadastrar um dado verifico o valor do último e adiciono 1... bem basicão mesmo!

Valeu aê! :lol:

(y)
||| PENSE NISSO ||| O ser humano, dizem, deve dormir 8 horas por dia. Isso equivale a 1 terço do seu dia dormindo. Agora imagine a seguinte situação: você, com 75 anos, prestes a morrer, olha para trás e percebe que dormiu 1 terço da sua vida, ou seja, 25 anos. Cara... 25 ANOS DORMINDO !!! Se você tem menos de 25 anos, simplesmente você vai dormir mais do que viveu até hoje!!! Pense nisso... e durma menos.

#12 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 18/01/2005, 03:40

Olá pessoal! ;)

Só ressuscitei o tópico pelo fato de se alguém usar a busca, e só achar este tópico para talz, para não se desesperar... B)

Eu estava com a mesma dúvida... como recontar um campo id com auto incremento...

Dei uma pesquisada no site oficial do MySQL, e encontrei uma solução, mais viável... :)

Tipow é o seguinte:

Antes de tudo, faça um backup da tabela, para o caso de ocorrer algum problema...
Depois, delete o campo que tem o auto-incremento, no meu caso, chama id...
Agora, recrie ele denovo... (não se esqueça de deixá-lo auto-incremento...)
Pronto! Se tudo deu certo, a recontagem funcionará! Pelo menos aqui deu! :rolleyes:

PS: se tudo der certo, não se esqueça de deletar o backup... :P

Flw's, T+V! :D Até mais

#13 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 18/01/2005, 08:35

Isso funciona muito bem, para tabelas de poucos registros...

Ambas as soluções não fazem o menor sentido, não se reconta indices de tabelas, pelo menos, como eu já disse, não faz sentido... Existe uma coisa em banco de dados chamada INTEGRIDADE REFERENCIAL, se vc fizer a recontagem de indices, por exemplo, num sistema pequeno de tres tabelas, vai causar uma desorganização de informação geral, vc pode se beneficiar de relacionamentos, mas, este não é um recurso muito utilizado e causaria uma carga muito grande no banco de dados, dependendo de quantos indices o sistema teria de reorganizar.

Ou seja... indice é indice, claro que, existem determinados momentos em que tal tarefa pode vir a ser necessária, mas... computacionalmente falando, não melhora em nada, pelo contrário.
------
Mero mortal!

#14 Alexx Ares

Alexx Ares

    Doutor

  • Usuários
  • 921 posts
  • Sexo:Masculino
  • Localidade:Santos - SP

Posted 18/01/2005, 10:46

Hoje em dia tenho uma visão diferente.

Antes, o ID auto-increment eu ja utilizava como ID de produto por exemplo:

ID | produto

Hoje, mantenho o ID como referencia interna, e para o produto, um outro id:

ID | id_produto | produto

Quando fizer uma query com id do produto, pego o id_produto e não o ID.

Assim, caso precise deletar um produto, e depois cadastrar denovo, e por algum motivo, preciso do mesmo id do produto, posso fazer isso.

Mas logicamente, cada caso é um caso... e as vezes isso atrapalha... enfim, a dica é boa, mas melhor ainda é planejar bem a tabela pensando no futuro

:lol: (y)
||| PENSE NISSO ||| O ser humano, dizem, deve dormir 8 horas por dia. Isso equivale a 1 terço do seu dia dormindo. Agora imagine a seguinte situação: você, com 75 anos, prestes a morrer, olha para trás e percebe que dormiu 1 terço da sua vida, ou seja, 25 anos. Cara... 25 ANOS DORMINDO !!! Se você tem menos de 25 anos, simplesmente você vai dormir mais do que viveu até hoje!!! Pense nisso... e durma menos.

#15 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 13822 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 14/10/2017, 10:09

Propecia Dosage Hair Loss 1mg Nizagara Ordering viagra Amoxicillin And Refrigerator Discount Doxycycline Online Purchase Levitra
Rayh Healthcare Trouve Viagra viagra Cialis Que Hace Achat Cialis 5mg Flagyl No Prescription
Tomar Priligy Caducado Zithromax Is Used To Treat online pharmacy Lasix Canada
No Prescription Amoxicillin 850 Propecia Barba Remove Pink Amoxicillin Stain From Clothes cialis price Buy Amoxicillin Online Canada Toronto Viagra Listino Prezzi Direct Isotretinoin Next Day Delivery Discount
Cheapest Viagra Pills For Sale Achat Viagra En Pharmacie En France Propecia Worked For Me Receding Hairline online pharmacy Where Can I Buy Nizagara? Mysearchdial
Cialis 20 Somministrazione Propecia Topical Thinning Hair viagra Achat De Viagra France Rx Legitimate Online Pharmacy
Cvs Pharmacy Viagra cost of levitra at cvs 360 Forum Dove Comprare Cialis
Ventolin Without Prescription India Macrobid Niftran Bacterial Infections Zithromax Prescription viagra online On Line Dutasteride Purchasing Medicine Cialis Sottobanco Viagra Criollo
Buy Cialis Brand Online viagra Levitra Sales In Usa Trama Propecia Female Pink Viagra Online




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq