Eu queria saber se existe uma maneira simples de aumentar manualmente o valor de incremento automático de uma coluna MySQL em um.
O caso de uso seria manter os índices sincronizados de duas tabelas. No meu caso, eles geralmente recebem uma nova entrada ao mesmo tempo. Mas às vezes apenas um deles recebe uma nova entrada. Isso faz com que os IDs sejam dessincronizados, o que não é o que eu quero. Devido a limitações no código, não consigo recuperar o ID de nenhuma linha inserida, pois há uma quantidade razoável de limitações na API que uso para me comunicar com o banco de dados. No entanto, posso executar consultas para o conteúdo do meu coração. Portanto, uma simples consulta para aumentar o valor em um seria muito apreciada!
Não faço promessas com este, mas você pode se safar com o seguinte:
Para uma tabela
mytable
no banco demydb
dadosDepois de executar isso, você pode verificar com
Acabei de tentar isso com uma mesa
ganeshbora.customer
no meu laptop Windows (5.7.12)CÓDIGO DE AMOSTRA
CÓDIGO DE AMOSTRA EXECUTADO
Conforme mostrado, o auto_increment da tabela foi incrementado de
14
para15
. Claro, eu fiz isso com todos os privilégios:Então, se você tiver os subsídios necessários para fazer isso ...
DE UMA CHANCE !!!
ATUALIZAÇÃO 2018-06-12 14:57 EDT
Um comentário de JohnathanFite traz um ponto válido:
Embora esta resposta conserte o AUTO_INCREMENT em um mundo perfeito, não vivemos em um mundo perfeito. Você precisaria de um tempo de inatividade do aplicativo (1-2 min) para congelar as gravações e os valores atuais de auto_increment. Se você tentar minha resposta em um sistema ativo, poderá estragar rapidamente os valores de auto_increment porque as reversões de INSERTs em uma tabela com valores de auto_increment produzirão lacunas. Em muitos casos, o incremento de folga pode ser maior que 1 devido a inserções em massa que revertem.
Por favor, leia meu post antigo de
May 12, 2015
: A coluna de incremento automático do MySQL aumenta após o erro de inserção ocorrer para ver como as lacunas de auto_increment são geradas.