Assine:
RSS do Blog...

Tenho uma tabela com uma coluna de auto-incremento para a chave primária. Ao adicionar e/ou excluir registros o valor de auto incremento irá continuar a aumentar.

problema 1:
Se eu tiver 10 registros inseridos e depois deletar 9 dos 10 registros, o próximo valor a ser inserido será 11, não 9.

Solução:
Pode-se executar a seguinte query:

ALTER TABLE tablename AUTO_INCREMENT = 1

Isso irá redefinir o valor do auto-incremento para o maior valor definido +1, assim, o valor de auto-incremento do próximo registro a ser inserido terá início a partir 9, no exemplo dado.

Pode-se utilizar também essa técnica, quando se deseja de fato limpar todos os registros da tabela e recomeçar o auto-incremento.

DELETE FROM tablename
ALTER TABLE tablename AUTO_INCREMENT = 1

Problema 2:
Se eu tivesse entrado com 10 registros, e excluido alguns como o  4 e 5 e quero inserir próximo registro como 4 não 11.

Solução:
Execute a seguinte query:

SET insert_id = 4;
INSERT INTO tablename VALUES ('blah', '...');

Isto irá adicionar o próximo registro na posição 4.

SET insert_id = # (onde # é o valor do auto-incremento que você quer usar).

PS.: Só é eficaz para a inserções imediatas imediatas, uma por vez.

Related posts:

  1. Howto: como apagar registros duplicados no MySQL
  2. Curiosidades sobre campo TIMESTAMP em MySQL
  3. Howto – Como iniciar o VmPlayer em Full Screen
  4. Mysql Error – Can´t connect to MySQL server (10061)
  5. Auto Configuração de propriedades de rede

4 Responses to “HowTo: MySQL – Como resetar um campo Auto Increament”

  1. Eulen says:

    Muito bom, vai ajudar bastante a corrigir varios DB. Valeu Jonas, sempre trazendo coisa boa pra nós.

  2. [...] é velha, mas os alunos sempre perguntam… Então estou colocando aqui para atender o pessoal. Como resetar um campo auto increment no MySQL ? « [...]

  3. Caro Jonas, ótimo post. Porém vejo que você não mostrou como realmente resetar o AUTO_INCREMENT. Da forma que o fez, teria que excluir a tabela, e as vezes não é isso que as pessoas querem ou podem fazer. Muitos devem vir parar no seu post esperando ler como se faz para zerar o AI, ou seja, quando for inserir um novo registro na tabela, ele comece o ID do 1.

    Acho que a forma mais eficaz seria a seguinte:

    ALTER TABLE `tabela` DROP `id`;
    ALTER TABLE `tabela` AUTO_INCREMENT = 1;
    ALTER TABLE `tabela` ADD `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

    Dessa forma ele zera o campo ID, excluindo-o. É claro que se tiver registros, os IDs já inseridos não serão sobrescritos, então dependendo da situação vale a pena zerar os registros tbm.

  4. Jonas says:

    Blz Rômulo, obrigado pelo comentário.

Leave a Reply