O que é AUTO_INCREMENT no MySQL? Como Verificar, Definir e Redefinir (Guia Completo)

O que é AUTO_INCREMENT no MySQL?

Conceitos básicos do AUTO_INCREMENT

No MySQL, AUTO_INCREMENT é um recurso que incrementa automaticamente valores numéricos em uma tabela de banco de dados. É comumente usado como chave primária (PRIMARY KEY), permitindo que números sequenciais sejam atribuídos automaticamente a cada inserção de uma nova linha — sem a necessidade de especificar manualmente o ID.

Principais usos do AUTO_INCREMENT

  • Geração automática de ID de membro : Atribui um ID único quando um usuário se registra
  • Gerenciamento de número de pedido : Atribui automaticamente um número para cada pedido
  • Atribuição de código de produto : Usado como identificador único para produtos

Ao utilizar o AUTO_INCREMENT corretamente, você pode manter a unicidade dos dados enquanto reduz a sobrecarga administrativa.

Como verificar o valor do AUTO_INCREMENT no MySQL [3 SQL Commands]

Método 1: Use SHOW TABLE STATUS

SHOW TABLE STATUS LIKE 'table_name';

Ao executar este comando, o valor atual de AUTO_INCREMENT é exibido na coluna Auto_increment.

Método 2: Recupere de INFORMATION_SCHEMA.TABLES

SELECT AUTO_INCREMENT FROM information_schema.tables 
WHERE table_schema = 'database_name' AND table_name = 'table_name';

Este método permite recuperar diretamente o valor de AUTO_INCREMENT definido para a tabela alvo.

Método 3: Use SHOW CREATE TABLE

SHOW CREATE TABLE table_name;

Ao executar este comando, o DDL (Data Definition Language) de criação da tabela é exibido, incluindo a configuração de AUTO_INCREMENT.

Como definir e modificar o AUTO_INCREMENT

Definindo AUTO_INCREMENT ao criar uma nova tabela

Para definir uma coluna com AUTO_INCREMENT ao criar uma nova tabela, use o SQL a seguir:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255)
);

Alterando o valor de AUTO_INCREMENT de uma tabela existente

Se você quiser alterar o valor de AUTO_INCREMENT de uma tabela existente, use o comando a seguir:

ALTER TABLE users AUTO_INCREMENT = 1000;

Após executar este comando, o próximo registro inserido começará com o ID 1000.

Alterando o valor de incremento do AUTO_INCREMENT (MySQL 8.0 ou posterior)

Por padrão, o valor de AUTO_INCREMENT aumenta em 1. No entanto, você pode alterar o valor de incremento, se necessário.

SET @@auto_increment_increment = 5;

Com esta configuração, o valor de AUTO_INCREMENT aumenta em 5 a cada vez (ex.: 1, 6, 11, …).

Observações importantes ao usar AUTO_INCREMENT [Prevent Data Issues]

Limite máximo de valor do AUTO_INCREMENT

O valor máximo de AUTO_INCREMENT depende do tipo de dados da coluna. Por exemplo, ao usar o tipo INT, o valor máximo é 2.147.483.647. Se esse limite for excedido, novos IDs não podem ser gerados, resultando em um erro.

Soluções

  • Use BIGINT para suportar valores muito maiores
  • Considere arquivamento de dados ou redefinição quando necessário

Comportamento do AUTO_INCREMENT após excluir dados

No MySQL, excluir registros não redefine automaticamente o valor de AUTO_INCREMENT.

DELETE FROM users WHERE id = 100;

Mesmo que um ID específico seja excluído dessa forma, o próximo valor inserido continua a partir do contador atual sem reutilização.

Como redefinir
Usando TRUNCATE TABLE exclui todos os dados e redefine o valor de AUTO_INCREMENT.

TRUNCATE TABLE users;

Após executar esta operação, o próximo ID inserido será reiniciado a partir de 1.

Transações e AUTO_INCREMENT

No MySQL, o valor de AUTO_INCREMENT não reverte mesmo que uma transação seja revertida (ROLLBACK).

START TRANSACTION;
INSERT INTO users (name) VALUES ('Alice');
ROLLBACK;

Neste caso, os dados não são inseridos, mas o valor de AUTO_INCREMENT permanece incrementado. Como resultado, podem ocorrer lacunas nos números de ID.

Perguntas Frequentes (FAQ)

Q1: Por que os valores de AUTO_INCREMENT às vezes apresentam lacunas?

A: Porque os números não são reiniciados após um INSERT seguido de um ROLLBACK. Exclusões e inserções falhadas também podem causar lacunas.

Q2: Como posso redefinir o valor do AUTO_INCREMENT?

A: Execute TRUNCATE TABLE table_name; para redefini-lo.

Q3: Como posso verificar o valor atual do AUTO_INCREMENT?

A: Use SHOW TABLE STATUS ou consulte INFORMATION_SCHEMA.TABLES.

Q4: O que acontece se o AUTO_INCREMENT exceder seu valor máximo?

A: Se exceder o valor máximo de INT, ocorrerá um erro. Você deve mudar o tipo da coluna para BIGINT.