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.
[quote]nunca, mas nunca mesmo, faça hard-code usando PK numerica auto-incremental…isso vai te zuar a vida…
[/quote]
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)
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.
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+