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

Columnas de incremento automático de MySQL en TRANSACTION, COMMIT y ROLLBACK

No, los mecanismos de incremento automático deben trabajar fuera del alcance de las transacciones, porque otro usuario puede estar insertando en la misma tabla antes de que finalice su transacción. La transacción del otro usuario debe poder asignar el siguiente valor, antes de saber si su transacción está utilizando el valor que acaba de asignar.

Re tu comentario:si puedo decirlo más claramente, cualquier cambio en el alcance de una transacción puede revertirse. El contador de incremento automático no se revierte, por lo que no obedece a la atomicidad de transacciones Tampoco obedece al aislamiento porque otra transacción obtiene el siguiente valor aunque su transacción aún no se haya confirmado.

La forma en que funciona el incremento automático significa que a veces, si inserta algunas filas y luego revierte su transacción, ¡los valores que asignó con el incremento automático se pierden para siempre!

Pero esto está bien. Los valores de clave principal deben ser únicos, pero no es necesario que sean consecutivos. En otras palabras, no son números de fila y no debería usarlos así. Por lo tanto, nunca debería necesitar disminuir los valores creados por el incremento automático.