mysql - with - sql management studio set auto increment




Como redefinir AUTO_INCREMENT no MySQL? (15)

Como posso redefinir o AUTO_INCREMENT de um campo? Eu quero começar a contar a partir de 1 novamente.


é para mesa vazia:

ALTER TABLE `table_name` AUTO_INCREMENT = 1;

Se você tem dados, mas quer limpá-los, eu recomendo usar isto:

ALTER TABLE `table_name` DROP `auto_colmn`;
ALTER TABLE `table_name` ADD  `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`);

A melhor maneira é remover o campo com AI e adicioná-lo novamente com AI, funciona para todas as tabelas


A partir do MySQL 5.6, a abordagem abaixo funciona mais rápido devido ao DDL online (note algorithm=inplace ):

alter table tablename auto_increment=1, algorithm=inplace;


ALTER TABLE nome da tabela AUTO_INCREMENT = 1


Aqui está a minha solução, mas eu não aconselho fazer isso se sua coluna tiver restrições ou estiver conectada como chave estrangeira a outras tabelas, pois ela teria efeitos ruins ou não funcionaria.

> Primeiro: solte a coluna

ALTER TABLE tbl_name DROP COLUMN column_id

> Segundo: recrie a coluna e defina-a como FIRST se você quiser como a primeira coluna que eu suponho.

ALTER TABLE tbl_access ADD COLUMN `access_id` int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST

Isso funciona bem!


As respostas mais bem classificadas para esta questão recomendam "ALTER yourtable AUTO_INCREMENT = value". No entanto, isso só funciona quando o value na alteração é maior que o valor máximo atual da coluna de incremento automático. De acordo com a documentação do MySQL :

Você não pode redefinir o contador para um valor menor ou igual a qualquer um que já tenha sido usado. Para MyISAM, se o valor for menor ou igual ao valor máximo atualmente na coluna AUTO_INCREMENT, o valor é redefinido para o máximo atual mais um. Para o InnoDB, você pode usar ALTER TABLE ... AUTO_INCREMENT = valor a partir do MySQL 5.0.3, mas se o valor for menor que o valor máximo atual na coluna, nenhum erro ocorrerá e o valor da seqüência atual não será alterado.

Em essência, você só pode alterar AUTO_INCREMENT para aumentar o valor da coluna de incremento automático, não redefinir para 1, como o OP faz na segunda parte da questão. Para opções que realmente permitem definir o AUTO_INCREMENT para baixo a partir do seu máximo atual, dê uma olhada em Reordenar / redefinir a chave primária de incremento automático .


Existe uma maneira muito fácil com o phpmyadmin sob a aba "operações", você pode definir, nas opções da tabela, incremento automático para o número que você deseja.


Existem boas opções dadas em ViralPatel

Observe que o nome da ALTER TABLE tablename AUTO_INCREMENT = value; não funciona para InnoDB


Para atualizar mais recente e um id

 ALTER TABLE table_name AUTO_INCREMENT = 
 (SELECT (id+1) id FROM table_name order by id desc limit 1);


Tentei alterar a tabela e definir auto_increment para 1, mas não funcionou. Resolvi excluir o nome da coluna que eu estava incrementando, crie uma nova coluna com seu nome preferido e configure essa nova coluna para incrementar a partir do início.


Você pode redefinir o contador com:

ALTER TABLE tablename AUTO_INCREMENT = 1

Para o InnoDB, você não pode definir o valor auto_increment menor ou igual ao maior índice atual. (citação da ViralPatel ):

Observe que você não pode redefinir o contador para um valor menor ou igual a qualquer um que já tenha sido usado. Para MyISAM, se o valor for menor ou igual ao valor máximo atualmente na coluna AUTO_INCREMENT, o valor é redefinido para o máximo atual mais um. Para InnoDB, se o valor for menor que o valor máximo atual na coluna, nenhum erro ocorrerá e o valor da sequência atual não será alterado.

Veja Como redefinir um AutoIncremento MySQL usando um valor MAX de outra tabela? sobre como obter dinamicamente um valor aceitável.


Você também pode usar a tabela TRUNCATE sintaxe da seguinte forma: TRUNCATE TABLE table_name

CUIDADO !! TRUNCATE TABLE your_table irá deletar tudo em your_table !!


ALTER TABLE news_feed DROP id

ALTER TABLE news_feed ADD  id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id)

Eu usei isso em alguns dos meus scripts, o campo id é descartado e, em seguida, adicionado novamente com configurações anteriores, todos os campos existentes na tabela do banco de dados são preenchidos com novos valores de incremento automático, isso também deve funcionar com InnoDB.

Note que todos os campos dentro da tabela serão recontados e terão outros ids !!!


SET  @num := 0;

UPDATE your_table SET id = @num := (@num+1);

ALTER TABLE your_table AUTO_INCREMENT =1;

Eu acho que isso vai fazer isso





auto-increment