Depois que um banco de dados inicia, quando um usuário faz a
primeira inserção em uma tabela T
onde
uma coluna auto-increment foi definida, e o usuário não
fornece um valor explicito para a coluna, então o InnoDB
executa SELECT MAX(auto-inc-column) FROM T
,
e atribui aquele valor incrementado de um a coluna e ao
contador de auto incremento da tabela. Dizemos que o contador
de auto incremento para a tabela T
foi
inicializado.
O InnoDB segue o mesmo procedimento na inicialização do contador de auto incremento para uma tabela recem criada.
Note que se o usuário especifica em uma inserção o valor 0 a coluna auto-increment. o InnoDM trata a linha como se o valor não tivesse sido especificado.
Depois do contador de auto incremento tiver sido inicializado, se um usuário insere uma linha onde especificamos explicitamente o valor da coluna e o valor é maior que o valor atual do contador, então o contador é configurado com o valor especificado. Se o usuário não especificar um valor explicitamente, o InnoDB incrementa a contador de um e atribui o seu novo valor a coluna.
O mecanismo de auto incremento, ao atribuir valor ao contador, desvia de manipuladores de travas e transações. De outra forma você também pode obter lacuas na sequência de números se você fizer um roll back da transação que tiver obtido números do contador.
O comportamento do auto incremento não é definido se um usuário passar um valor negativo a coluna ou se o valor se tornar maior que o valor inteiro máximo que pode ser armazenado no tipo inteiro especificado.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.