MySQL AUTO_INCREMENT

Resumo : neste tutorial, você aprenderá como usar o AUTO_INCREMENTatributo MySQL para gerar automaticamente um valor numérico exclusivo para uma coluna.

Introdução ao atributo MySQL AUTO_INCREMENT

No MySQL, você usa o AUTO_INCREMENTatributo para gerar automaticamente números exclusivos para uma coluna cada vez que insere uma nova linha na tabela.

Normalmente, você usa o AUTO_INCREMENTatributo da chave primária para garantir que cada linha tenha um identificador exclusivo.

Criando uma tabela com coluna MySQL AUTO_INCREMENT

Para criar uma tabela com uma coluna de incremento automático, você deve usar o AUTO_INCREMENTatributo ao definir a coluna. Por exemplo:

CREATE TABLE contacts(
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(320) NOT NULL
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste exemplo, atribuímos o AUTO_INCREMENTatributo à coluna id para defini-lo como uma chave primária de incremento automático.

Isso significa que quando você insere uma nova linha na contactstabela, o MySQL gera automaticamente um número exclusivo para ela.

Inserindo linhas com coluna AUTO_INCREMENT

Ao inserir linhas na tabela com uma AUTO_INCREMENTcoluna, não é necessário especificar um valor para essa coluna. O MySQL irá gerar automaticamente o valor para você. Por exemplo:

INSERT INTO contacts(name, email)
VALUES('John Doe', '[email protected]');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Na INSERTinstrução, não especificamos um valor para a coluna id e fornecemos apenas os valores para a coluna nome e email. O MySQL gerou automaticamente o valor 1 para a idcoluna:

SELECT * FROM contacts;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+----+----------+----------------------------+
| id | name     | email                      |
+----+----------+----------------------------+
|  1 | John Doe | [email protected] |
+----+----------+----------------------------+
1 row in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Recuperando o último valor de incremento automático

Para obter o AUTO_INCREMENTvalor que o MySQL gerou para a inserção mais recente, você usa a LAST_INSERT_ID()função:

SELECT LAST_INSERT_ID();Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|                1 |
+------------------+
1 row in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A consulta retorna o último valor de incremento automático gerado para a IDcoluna, que você pode usar para outras finalidades, como inseri-lo em uma tabela relacionada.

Redefinindo o valor atual de incremento automático

Para redefinir o AUTO_INCREMENTvalor, você usa a ALTER TABLEinstrução. Por exemplo, a instrução a seguir redefine o valor de incremento automático atual para 1:

ALTER TABLE contacts AUTO_INCREMENT = 1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Alternativamente, você pode excluir todas as linhas da tabela e redefinir o AUTO_INCREMENTvalor ao mesmo tempo. Para fazer isso, você usa a TRUNCATE TABLEdeclaração:

TRUNCATE TABLE contacts;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A ALTER TABLEinstrução só terá efeito se o valor for maior ou igual ao valor máximo da AUTO_INCREMENTcoluna.

Por exemplo:

INSERT INTO contacts(name, email) 
VALUES
   ('John Doe', '[email protected]'),
   ('Jane Doe', '[email protected]');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A contactstabela agora tem duas linhas:

+----+----------+----------------------------+
| id | name     | email                      |
+----+----------+----------------------------+
|  1 | John Doe | [email protected] |
|  2 | Jane Doe | [email protected] |
+----+----------+----------------------------+
2 rows in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Se você redefinir a AUTO_INCREMENTcoluna para qualquer número menor ou igual a 2 usando a ALTER TABLEinstrução, a operação não terá efeitos. Por exemplo:

ALTER TABLE contacts AUTO_INCREMENT = 1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Agora, se você inserir uma nova linha na tabela de contatos, o MySQL usará o próximo número 3 para a nova linha. Por exemplo:

INSERT INTO contacts(name, email) 
VALUES('Bob Climo', '[email protected]');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A consulta a seguir retorna todas as linhas da contactstabela:

SELECT * FROM contacts;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+----+-----------+-----------------------------+
| id | name      | email                       |
+----+-----------+-----------------------------+
|  1 | John Doe  | [email protected]  |
|  2 | Jane Doe  | [email protected]  |
|  3 | Bob Climo | [email protected] |
+----+-----------+-----------------------------+
3 rows in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Adicionando uma coluna AUTO_INCREMENT a uma tabela existente

Para adicionar um AUTO_INCREMENTa uma tabela existente, você usa a ALTER TABLEinstrução. Por exemplo:

Primeiro, crie uma nova tabela sem AUTO_INCREMENTcoluna:

CREATE TABLE subscribers(
   email VARCHAR(320) NOT NULL UNIQUE
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, adicione a coluna idà subscriberstabela como uma AUTO_INCREMENTcoluna:

ALTER TABLE subscribers
ADD id INT AUTO_INCREMENT PRIMARY KEY;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Resumo

  • Atribua o AUTO_INCREMENTatributo a uma coluna para instruir o MySQL a gerar automaticamente valores exclusivos para essa coluna.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *