Incremento automático después de eliminar en MySQL

Resuelto OmidTahouri asked hace 14 años • 18 respuestas

Tengo una tabla MySQL con un campo de clave principal que tiene AUTO_INCREMENT activado. Después de leer otras publicaciones aquí, noté personas con el mismo problema y con respuestas variadas. Algunos recomiendan no utilizar esta función, otros afirman que no se puede "arreglar".

Tengo:

table: course
fields: courseID, courseName

Ejemplo: número de registros en la tabla: 18. Si elimino los registros 16, 17 y 18, esperaría que el siguiente registro ingresado tenga el ID del curso 16; sin embargo, será 19 porque el último ID del curso ingresado fue 18.

Mi conocimiento de SQL no es sorprendente, pero ¿hay alguna forma de actualizar o actualizar este recuento con una consulta (o una configuración en la interfaz phpMyAdmin)?

Esta tabla se relacionará con otras en una base de datos.


Teniendo en cuenta todos los consejos, he decidido ignorar este "problema". Simplemente eliminaré y agregaré registros mientras dejo que el incremento automático haga su trabajo. Supongo que realmente no importa cuál sea el número, ya que solo se usa como un identificador único y no tiene un significado comercial (como se mencionó anteriormente) .

Para aquellos a quienes pueda haber confundido con mi publicación original: no deseo usar este campo para saber cuántos registros tengo. Sólo quería que la base de datos se viera ordenada y tuviera un poco más de coherencia.

OmidTahouri avatar Feb 07 '10 01:02 OmidTahouri
Aceptado

Lo que intentas hacer suena peligroso, ya que ese no es el uso previsto de AUTO_INCREMENT.

Si realmente desea encontrar el valor de clave más bajo no utilizado, no lo use AUTO_INCREMENTen absoluto y administre sus claves manualmente. Sin embargo, esta NO es una práctica recomendada.

Da un paso atrás y pregunta "¿ por qué necesitas reciclar valores clave? " ¿Unsigned INT(o BIGINT) no proporciona un espacio clave lo suficientemente grande?

¿Realmente va a tener más que 18,446,744,073,709,551,615registros únicos a lo largo de la vida útil de su aplicación?

Dolph avatar Feb 06 '2010 18:02 Dolph
ALTER TABLE foo AUTO_INCREMENT=1

Si ha eliminado las entradas más recientes, eso debería configurarlo para usar la siguiente más baja disponible. Como en, siempre que no haya 19, eliminar 16-18 restablecerá el incremento automático para usar 16.


EDITAR: Me perdí un poco sobre phpmyadmin. También puedes configurarlo allí. Vaya a la pantalla de la tabla y haga clic en la pestaña de operaciones. Hay un AUTOINCREMENTcampo allí que puedes configurar manualmente para lo que necesites.

monksp avatar Feb 06 '2010 18:02 monksp