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

incremento automático primario dejando espacios en el conteo

Esto es por diseño y siempre sucederá.

¿Por qué?

Tomemos 2 transacciones superpuestas que están haciendo INSERT

  • La transacción 1 hace un INSERT, obtiene el valor (digamos 42), hace más trabajo
  • La transacción 2 hace un INSERT, obtiene el valor 43, hace más trabajo

Entonces

  • La transacción 1 falla. Rueda hacia atrás. 42 permanece sin usar
  • La transacción 2 se completa con 43

Si se garantizaran valores consecutivos, cada transacción tendría que ocurrir una tras otra. No muy escalable.

Consulte también Hacer que los registros insertados siempre reciban identidad contigua valores (SQL Server pero se aplica el mismo principio)