Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

INSERT IGNORE aumenta o contador de incremento automático mesmo que nenhum registro seja adicionado?


Citando a página de manual para INSERT :

O INSERT IGNORE sintaxe é apenas uma maneira de suprimir certas mensagens de erro e é útil quando você está ciente de que esses erros podem ocorrer e/ou deseja tratá-los em um estágio posterior. Nos bastidores, você ainda tem uma inserção regular, exceto que ela falha devido a uma chave violada. O MySQL precisa dos valores de linha reais para fazer uma inserção e o contador AUTO_INCREMENT será incrementado de acordo com regras regulares :
  1. O valor da coluna é NULL.
  2. O valor da coluna não está definido.
  3. O valor da coluna é maior que o contador.

Portanto, a menos que você possa repensar sua lógica (por exemplo, testar se os valores de chave existem antes de fazer a inserção), a única maneira de redefinir o contador é ALTER TABLE :
ALTER TABLE t2 AUTO_INCREMENT = value;