MySQL AUTO_INCREMENT com exemplos

O que é incremento automático?

O incremento automático é uma função que opera em tipos de dados numéricos. Ele gera automaticamente valores numéricos sequenciais toda vez que um registro é inserido em uma tabela para um campo definido como incremento automático.

Quando usar incremento automático?

Na lição sobre normalização de banco de dados, vimos como os dados podem ser armazenados com redundância mínima, armazenando dados em muitas tabelas pequenas, relacionadas entre si, usando chaves primárias e estrangeiras.

MySQL AUTO_INCREMENT com exemplos

Uma chave primária deve ser única, pois identifica exclusivamente uma linha em um banco de dados. Mas, como podemos garantir que a chave primária seja sempre única? Uma das soluções possíveis seria usar uma fórmula para gerar a chave primária, que verifica a existência da chave, na tabela, antes de adicionar dados. Isso pode funcionar bem, mas como você pode ver, a abordagem é complexa e não infalível. Para evitar tal complexidade e garantir que a chave primária seja sempre única, podemos usar MySQLRecurso de incremento automático do para gerar chaves primárias. O incremento automático é usado com o tipo de dados INT. O tipo de dados INT suporta valores assinados e não assinados. Tipos de dados não assinados podem conter apenas números positivos. Como prática recomendada, é recomendável definir a restrição não assinada na chave primária de incremento automático.

Sintaxe de incremento automático

Vejamos agora o script usado para criar a tabela de categorias de filmes.

CREATE TABLE `categories` (
  `category_id` int(11) AUTO_INCREMENT,
  `category_name` varchar(150) DEFAULT NULL,
  `remarks` varchar(500) DEFAULT NULL,
  PRIMARY KEY (`category_id`)
);

Observe o “AUTO_INCREMENT” no campo category_id. Isso faz com que o ID da categoria seja gerado automaticamente sempre que uma nova linha for inserida na tabela. Não é fornecido ao inserir dados na tabela, MySQL gera isso.

Por padrão, o valor inicial para AUTO_INCREMENT é 1 e será incrementado em 1 para cada novo registro

Vamos examinar o conteúdo atual da tabela de categorias.

SELECT * FROM `categories`;

Executando o script acima em MySQL workbench contra o myflixdb nos dá os seguintes resultados.

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL

Vamos agora inserir uma nova categoria na tabela de categorias.

INSERT INTO  `categories` (`category_name`) VALUES ('Cartoons');

Executando o script acima no myflixdb em MySQL bancada nos dá os seguintes resultados mostrados abaixo.

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL
9 Cartoons NULL

Observe que não fornecemos o ID da categoria. MySQL gerou-o automaticamente para nós porque o ID da categoria é definido como incremento automático.

Se você deseja obter o último ID de inserção gerado por MySQL, você pode usar a função LAST_INSERT_ID para fazer isso. O script mostrado abaixo obtém o último id gerado.

SELECT LAST_INSERT_ID();

A execução do script acima fornece o último número de incremento automático gerado pela consulta INSERT. Os resultados são mostrados abaixo.

MySQL INCREMENTO AUTOMÁTICO

Resumo

  • Atributo de incremento automático quando especificado em uma coluna com tipos de dados numéricos, gera números sequencialmente sempre que uma nova linha é adicionada ao banco de dados.
  • O incremento automático é comumente usado para gerar chaves primárias.
  • O tipo de dados definido no incremento automático deve ser grande o suficiente para acomodar muitos registros. Definir TINYINT como o tipo de dados para um campo de incremento automático limita o número de registros que podem ser adicionados à tabela apenas a 255, pois quaisquer valores além disso não seriam aceitos pelo tipo de dados TINYINT.
  • É considerada uma boa prática especificar a restrição não assinada nas chaves primárias de incremento automático para evitar números negativos.
  • Quando uma linha é excluída de uma tabela, seu ID incrementado automaticamente não é reutilizado. MySQL continua gerando novos números sequencialmente.
  • Por padrão, o valor inicial para AUTO_INCREMENT é 1 e será incrementado em 1 para cada novo registro
  • Para permitir que a sequência AUTO_INCREMENT comece com outro valor, use AUTO_INCREMENT = 10