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

MySQL INSERT ....ON DUPLICATE UPDATE - Adiciona um ao incremento automático


INSERIR ... NA ATUALIZAÇÃO DE CHAVE DUPLICADA é descrito como uma "inserção de modo misto" para fins de AUTO_INCREMENT do InnoDB tratamento. As inserções de modo misto são basicamente aquelas em que o máximo número de AUTO_INCREMENT necessários valores são conhecidos, mas a quantidade que realmente será necessária não é.

As inserções de modo misto são tratadas especialmente por padrão, conforme descrito no Documentos MySQL :

Se você estiver usando o InnoDB, suas alternativas são:
  1. Evite INSERIR ... NA ATUALIZAÇÃO DE CHAVE DUPLICADA .
  2. Defina o innodb_autoinc_lock_mode parâmetro para 0 , para o modo de bloqueio de incremento automático "tradicional", que garante que todos os INSERT instruções atribuirão valores consecutivos para AUTO_INCREMENT colunas. No entanto, isso é feito bloqueando durante a instrução, portanto, há uma perda de desempenho associada a essa configuração.
  3. (Recomendado) Ignore as lacunas no AUTO_INCREMENT coluna.

Observação:AUTO_INCREMENT o manuseio é totalmente diferente no MyISAM, que não apresenta esse comportamento.