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

Resuma esta postagem com: