sql >> Base de Datos >  >> RDS >> Mysql

MySQL INSERTAR .... EN ACTUALIZACIÓN DUPLICADA:agrega uno al incremento automático

INSERT ... ON DUPLICATE KEY UPDATE se describe como una "inserción de modo mixto" para los propósitos de AUTO_INCREMENT de InnoDB manejo. Las inserciones de modo mixto son básicamente aquellas en las que el máximo número de AUTO_INCREMENT requeridos Se conocen los valores, pero la cantidad que realmente se necesitará no lo es.

Las inserciones en modo mixto se manejan especialmente de forma predeterminada, como se describe en Documentos de MySQL :

Si está utilizando InnoDB, sus alternativas son:

  1. Evite INSERT ... ON DUPLICATE KEY UPDATE .
  2. Establezca el innodb_autoinc_lock_mode parámetro a 0 , para el modo de bloqueo de incremento automático "tradicional", que garantiza que todos los INSERT declaraciones asignarán valores consecutivos para AUTO_INCREMENT columnas Sin embargo, esto se logra mediante el bloqueo durante la declaración, por lo que hay una pérdida de rendimiento asociada con esta configuración.
  3. (Recomendado) Ignora los espacios en blanco en el AUTO_INCREMENT columna.

Nota:AUTO_INCREMENT el manejo es totalmente diferente en MyISAM, que no muestra este comportamiento.