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.
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
lounaticoPJ
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
pedrobuskoPJ
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
NewbieJavaPJ
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
DianaPJ
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
iktuzPJ
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 T+