Como posso redefinir o AUTO_INCREMENT
campo?
Quero que comece a contar 1
novamente.
mysql
sql
auto-increment
para fora
fonte
fonte
TRUNCATE TABLE yourTableName;
Respostas:
Você pode redefinir o contador com:
Para o InnoDB, você não pode definir o
auto_increment
valor menor ou igual ao índice atual mais alto. (citação da ViralPatel ):Veja Como redefinir um incremento automático do MySQL usando um valor MAX de outra tabela? sobre como obter dinamicamente um valor aceitável.
fonte
circular reference
curcular reference
?fonte
Eu acho que isso fará isso
fonte
UPDATE
atualizará todos os valores naid
coluna.Simplesmente assim:
reference: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
fonte
reset
significa configurá-lo com o valor padrão ... para que você possa substituir "value" por 1Existe uma maneira muito fácil com o phpmyadmin na guia "operações", você pode definir, nas opções da tabela, o incremento automático para o número desejado.
fonte
A melhor solução que funcionou para mim:
É rápido, funciona com o innoDB e não preciso saber o valor máximo atual! Dessa forma, o contador de incremento automático será redefinido e iniciará automaticamente a partir do valor máximo existente.
fonte
SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = 'my_table' AND table_schema = DATABASE( ) ;
5.6.15
, enquanto queALTER TABLE tablename AUTO_INCREMENT = 1
faz não .As respostas com a classificação mais alta para esta pergunta recomendam "ALTER yourtable AUTO_INCREMENT = value". No entanto, isso só funciona quando
value
o alter é maior que o valor máximo atual da coluna de incremento automático. De acordo com a documentação do MySQL 8 :Em essência, você só pode alterar AUTO_INCREMENT para aumentar o valor da coluna de incremento automático, não redefini-lo para 1, conforme solicitado pelo OP na segunda parte da pergunta. Para opções que realmente permitem definir o AUTO_INCREMENT para baixo do seu máximo atual, consulte Reordenar / redefinir a chave primária de incremento automático .
fonte
Adicionando uma atualização porque a funcionalidade mudou no MySQL 5.6. No MySQL 5.6, você PODE usar a simples ALTER TABLE com o InnoDB:
Os documentos são atualizados para refletir isso:
http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
Meus testes também mostram que a tabela NÃO é copiada, o valor é simplesmente alterado.
fonte
Existem boas opções em Como redefinir a coluna de incremento automático do MySQL
Note-se que
ALTER TABLE tablename AUTO_INCREMENT = value;
se não trabalhar para InnoDBfonte
DELETE
(ouROLLBACK
) não recuperará IDs. Uma exceção: após uma reinicialização (ou falha), o próximo ID é calculadoMAX(id)+1
, recuperando efetivamente os IDs excluídos no final . Exceção à exceção: o MySQL 8.0 deixa esses IDs não utilizados.Usei isso em alguns dos meus scripts, o campo id é descartado e, em seguida, adicionado novamente com as 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 o InnoDB.
Observe que todos os campos dentro da tabela serão recontados e terão outros IDs !!!.
fonte
Você também pode usar a
TRUNCATE
tabela de sintaxe como esta:TRUNCATE TABLE table_name
Cuidado com o radar !!
TRUNCATE TABLE your_table
irá apagar tudo no seuyour_table
!!fonte
TRUNCATE
também excluirá TODAS as suas linhas na tabela especificada!TRUNCATE
irá redefinir osauto_increment
campos também? Meu caso de uso é limpar os dados antigos da tabela e iniciar os IDs de 1 novamente para novos dados (imagine, limpando a tabela para uso adequado após a conclusão do teste). Eu pensei que teria que ficar comDROP
a mesa inteira e deCREATE
novo.auto_increment
valor atual , use emDELETE FROM
vez deTRUNCATE
.é para mesa vazia:
Se você possui dados, mas deseja organizá-los, recomendo o seguinte:
fonte
Aqui está minha solução, mas não aconselho fazer isso se sua coluna tiver restrições ou estiver conectada como chave estrangeira a outras tabelas, pois isso teria efeitos negativos ou nem funcionaria.
> Primeiro: solte a coluna
> Segundo: recrie a coluna e defina-a como PRIMEIRO, se você quiser que seja a primeira coluna que eu assumo.
Isso funciona bem!
fonte
No MySQL 5.6, a abordagem abaixo funciona mais rapidamente devido ao DDL online (nota
algorithm=inplace
):alter table tablename auto_increment=1, algorithm=inplace;
fonte
Você pode simplesmente truncar a tabela para redefinir a sequência
fonte
Tentei alterar a tabela e definir auto_increment como 1, mas não funcionou. Resolvi excluir o nome da coluna que estava incrementando, criar uma nova coluna com o seu nome preferido e definir essa nova coluna para incrementar desde o início.
fonte
O contador de incremento automático para uma tabela pode ser (re) definido de duas maneiras:
Executando uma consulta, como outros já explicados:
ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;
Usando o Workbench ou outra ferramenta visual de design de banco de dados. Vou mostrar no Workbench como isso é feito - mas também não deve ser muito diferente em outras ferramentas. Clique com o botão direito do mouse na tabela desejada e escolha
Alter table
no menu de contexto. Na parte inferior, você pode ver todas as opções disponíveis para alterar uma tabela. EscolhaOptions
e você receberá este formulário:Em seguida, basta definir o valor desejado no campo,
Auto increment
como mostrado na imagem. Basicamente, isso executará a consulta mostrada na primeira opção.fonte
Para atualizar o mais recente mais um ID
fonte
ALTER TABLE nome da tabela AUTO_INCREMENT = 1
fonte
Pesquisei no Google e encontrei essa pergunta, mas a resposta que estou procurando realmente preenche dois critérios:
Como não consegui encontrar exatamente o que quero aqui, juntei a resposta de várias respostas e a compartilhei aqui.
Algumas coisas a serem observadas:
id
com o tipo comoint
chave primáriaEtapa 1: Criar procedimento armazenado
crie um procedimento armazenado como este:
Então execute.
Antes da execução, fica assim quando você olha em Procedimentos armazenados no seu banco de dados.
Quando executo, basta selecionar o procedimento armazenado e pressionar Executar seleção
Nota: a parte dos delimitadores é crucial. Portanto, se você copiar e colar das principais respostas selecionadas nesta pergunta, elas tendem a não funcionar por esse motivo.
Depois de executar, devo ver o procedimento armazenado
Se você precisar alterar o procedimento armazenado, exclua o procedimento armazenado e selecione para executar novamente.
Etapa 2: chamar o procedimento armazenado
Desta vez, você pode simplesmente usar consultas normais do MySQL.
Originalmente, a partir das minhas próprias consultas SQL, observe em https://simkimsia.com/library/sql-queries/#mysql-reset-autoinc e adaptado para StackOverflow
fonte
fonte
Tente executar esta consulta
Ou tente esta consulta para o incremento automático de redefinição
E defina o incremento automático e execute esta consulta
fonte
Sugiro que você vá ao Query Browser e faça o seguinte:
O incremento automático deve ser redefinido para um assim que você inserir uma nova linha na tabela.
Não sei o que acontecerá se você tentar adicionar uma linha em que já exista um valor de campo auto_increment.
Espero que esta ajuda!
fonte
A melhor maneira é remover o campo com AI e adicioná-lo novamente com AI, funciona para todas as tabelas
fonte