tabelas de banco de dados têm números de identificação únicos , chamados chaves primárias, para cada linha individual. Função de auto -incremento do MySQL atribui automaticamente um novo número para uma coluna inteira você especificar como sua chave primária , o que economiza o tempo necessário para criar sua própria chave e rastreamento de código primário. Se você soltar linhas , no entanto, a sua seqüência de valores de incremento automático cai fora de sincronia com o resto dos valores da coluna. Auto - Incremento Função
A função de auto-incremento funciona mantendo um registro de números de identificação de linhas na própria mesa. Quando você designar uma determinada coluna de auto-incremento , sempre que você adicionar uma linha à tabela, motor ISAM do MySQL preenche automaticamente a coluna com um valor numérico que é maior do que o valor que identificou a última linha que você adicionou. A função não contar com os dados em suas linhas em si, mas o seu próprio recorde do último valor atribuído a ele uma linha .
Getting Out of Sync
Quando você excluir linhas de sua tabela, você excluir componentes individuais na seqüência de números do motor ISAM atribuídos a seus registros. Se você excluir a sua quarta linha , por exemplo, então o MySQL não voltar e reajusta os valores numéricos para o campo que está incrementando automaticamente , a fim de manter a seqüência numérica. Da mesma forma, se o MySQL deu a última linha que você adicionou um número de identificação de 20 e de excluí-lo , o motor ISAM ainda atribui a próxima linha de adicionar o valor de 21 .
Auto - Incremento resposta
Porque o propósito de auto-incremento é proporcionar cada linha em sua tabela MySQL um identificador único, não importa se os números que atribui como identificação têm buracos na seqüência ou não. Isso só importa que não há duas linhas têm o mesmo número de identificação . Projetos do Programa que dependem de uma seqüência ininterrupta de números para navegar tabela de banco de dados não são confiáveis , porque as linhas de base de dados descartados pode torná-los defeito. Carregando os dados da linha em um objeto array -like e usar indicies elemento é uma abordagem mais estável.
Solution
Para manter a sua coluna de auto-incremento em seqüência perfeita, corrigir falhas depois de soltar as linhas de sua tabela. Quando você soltar toda a coluna , o MySQL também descarta o seu próprio recorde do próximo número que vai usar para a próxima linha que você atribui essa tabela. Quando você recriar a coluna com a mesma sintaxe de auto-incremento , MySQL preenche automaticamente a coluna com uma seqüência ordenada de números para cada linha que você tem atualmente no banco de dados . No entanto , para manter uma seqüência perfeita , você tem que repetir este passo a cada vez que você solta uma linha de sua tabela.