MySQL auto_increment

6 respostas
N

Criei um banco de dados no MySQL + um sistema em Java para gerenciar esse base de dados.

Numa das tabelas, a chave primária é do tipo INTEGER e AUTO_INCREMENT

Supondo que eu tenha 10 registros cadastrados através do front-end em Java, o MySQL seta a chave primária de cada um para 1, 2, 3, 4, etc…
Até aí tudo bem.

Mas o problema é que se eu deleto esses 10 registros, e resolver inserir novos registros, o MySQL não vai começar do 1 novamente. Ele começará a setar a chave primária a partir do 11, mesmo após todos os outros registros terem sido deletados.

Porque? Tem como resolver esse impasse?

6 Respostas

J

Lógico que ele não vai voltar!

Se quiser que ele volte, terá que alterar a tabela setando o valor de auto_increment para 0 novamente:

Mas você só deve fazer isso quando quiser esvaziar a tabela, e recomeçar, pois se você fizer isso toda hora, vai virar uma bagunça.

L

mas cara… o que tem demais isso?! porque isso é um impasse??!

deixa a chave ser a partir do 11! tem problema?

um abraço!!

P

a chave numerica auto-increment deve ser transparente e servir de index pro banco…

nunca, mas nunca mesmo, faça hard-code usando PK numerica auto-incremental…isso vai te zuar a vida…

N

nunca, mas nunca mesmo, faça hard-code usando PK numerica auto-incremental…isso vai te zuar a vida…

pedrobusko, o que você quis transmitir? Que eu não devo usar como chave primária um INTEGER AUTO_INCREMENT?

Aproveitando o tópico, alguém pode postar um exemplo de código para modificar os atributos de uma coluna no MySQL? Já tentei mas ocorre erro na sintaxe.

Ex: Há uma coluna nome_vendedor que é um varchar(20) e quero mudar para varchar(30). Tentei:

ALTER TABLE vendas ALTER COLUMN nome_vendedor varchar(30)

Mas não funcionou.

Obrigado!

D

Olá Newbie!

O que o Pedro quis falar foi:
Se vc usar chave auto-increment está deixando seu sistema dependente do banco…quer dizer, o seu sistema deveria ter a camada DAO separada de forma que o banco não tivesse relevância. Por exemplo, vc pode criar uma lógica para controlar a geração de chaves, a cada NOVO registro inserido vc manda buscar uma chave para ele.
E caso vc queira que a contagem reinicie, vc mesmo pode ir na sua tabela de chaves e alterar a ultima chave que está lá.
Dessa forma, não importa se vc está usando Mysql, Oracle, postgress ou SqlServer.

t+

I

Não sei que tipo o MySQL usa para criar auto incremental, mas no oracle por exemplo, os índices são BigInteger´s. Para se reiniciar ou reusar índices tem-se de tomar MUITO cuidado principalmente se as triggers não forem bem feitas e “novos relacionamentos” começarem a aparecer :grin: T+

Criado 13 de dezembro de 2006
Ultima resposta 14 de dez. de 2006
Respostas 6
Participantes 6