AUTO INCREMENT MySql


Ao fazer alguns tipos de sistemas web, é necessário gerar um ID único e guardá-lo em alguma tabela para servir como chave principal que irá identificar algo ou alguém, é aí que entra o atributo Auto Increment no Mysql. Para facilitar o entendimento, vamos montar um cadastro de usuário de exemplo. Neste exemplo, vamos supor que tenhamos uma página de cadastro de usuários, onde o usuário precisa preencher o nome dele, o email e uma senha. Após clicar no botão cadastrar, os dados devem ser salvos em banco de dados, em uma tabela chamada usuarios. Nessa tabela teremos os seguintes campos:

– id_usuario (inteiro auto_increment chave primária)
– nm_usuario (varchar de 100)
– email_usuario (varchar de 100)
– senha_usuario (varchar de 20)

id_usuario – será o identificador único do usuário, é um número que não pode se repetir. Como você deve ter notado, na tabela de cadastro, o ID não foi informado pelo usuário, e nem poderia, pois deve ser um número único (que não se repete), é neste caso que é utilizado o atributo Auto Increment. Veja a imagem abaixo, comento depois:

Na imagem, estou no phpMyadmin, na pagina de criação de uma tabela chamada usuarios. Note que no campo id_usuario, selecionei o atributo primary a também o atributo A.I. Mas o que isso significa? Continue lendo que você vai saber logo abaixo:

AUTO INCREMENT MySql e Chave Primária

Chave primária é definida selecionando a opção Primary para índice, isso define que este campo “id_usuario” jamais poderá ser repetido, e mesmo que você tente forçar a adição de uma valor repetido, um erro irá ocorrer. Isso é super essencial para evitar confusões. Imagine se você, por algum engano, acaba definindo dois ou mais usuários com o mesmo ID? Isso geraria uma bagunça sem tamanho, então é obrigatório que este campo seja sempre único, e isso você consegue com o atributo Primary.

A caixa de checagem A.I é o Auto Increment de que tenho lhe falado. Uma vez que você definite o atributo Auto Increment, o campo será incrementado automaticamente quando você insere um novo registro. Por exemplo, se você tiver 3 usuários cadastrados no banco: um com ID 1, outro com ID 2 e outro com ID 3, quando você inserir o próximo usuário, à ele será atribuído automaticamente o ID 4.

Vejamos um pouco de código:

1
$sql = 'insert into usuarios (nm_usuario, email_usuario, senha_usuario) values ("Anderson", "andersonmaki@gmail.com", "123456")';
$sql = 'insert into usuarios (nm_usuario, email_usuario, senha_usuario) values ("Anderson", "andersonmaki@gmail.com", "123456")';

Como você pode ver no código acima, você só precisa informar os valores para os campos nm_usuario, email_usuario, senha_usuario, o campo id_usuario será preenchido automaticamente pelo MySQL, desde que você tenha configurado o atributo Auto Increment para este campo.

Agora, um problema é que quando você exclui usuários, os índices não são corrigidos automaticamente. Por exemplo, se você tinha 100 usuários em seu banco de dados e excluiu 99, deixando apenas 1, quando for inserir o próximo usuário, a ele será atribuído o ID 101 e não o ID 2. Veja abaixo como corrigir esse problema.

Auto Increment mysql: Mudar valor incrementado

Existe uma forma facíl de configurar qual é o valor de auto increment do Mysql. No nosso caso, temos que configurar o valor para 1, pois só temos 1 usuário e o próximo deve ser o 2. Para fazer isso, você pode utilizar o comando abaixo:

1
$sql = "ALTER TABLE usuarios AUTO_INCREMENT=1";
$sql = "ALTER TABLE usuarios AUTO_INCREMENT=1";

Já se você tivesse um usuário com ID 1 e um com id 100, uma idéia seria você executar um update e modificar o id do usuário 100 para o id 2, a partir daí bastaria repetir o alter table visto acima, modificando o valor para o atributo auto increment para 2.

Agora, se você quisesse fazer uma limpa geral, sem importar-se com os dados que serão perdidos, um atalho é o comando abaixo:

1
$sql = "TRUNCATE TABLE usuarios";
$sql = "TRUNCATE TABLE usuarios";

O comando acima irá excluir todos os registros da tabela usuários e irá reconfigurar o valor de auto increment para 0.

Auto Increment Mysql: Conclusão

O atributo auto increment é um recurso muito útil que ajuda os desenvolvedores a manter seus scripts seguros e ajuda a evitar erros, contudo, se você for efetuar modificação de valores de chaves primárias, você precisa ficar atento à todas as relações que dada tabela possui com outras, ou poderá estar remando contra a maré. Por exemplo, se você tiver duas tabelas: usuarios (já explicada) e outra chamada pedidos. É provável que a tabela pedidos possua um campo chamado id_usuario onde é armazenado o id do usuário que fez algum pedido. Assim sendo, você, antes de modificar o id de um usuário da tabela usuários, deverá fazer a modificação do id na tabela pedidos. Isso é válido para todas as tabelas que possam ter relação com a tabela usuários.

Bom, fica aí a dica, até o próximo artigo aqui no Profissionais Web

AUTO INCREMENT MySql
4.9 (97.14%) 7 votes

Leave a Reply