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

Hacer que el incremento automático llene el número previamente eliminado

Entonces no desea utilizar una columna de incremento automático. Si desea completar los espacios, configúrelo en una columna int y maneje la lógica en el proceso almacenado o inserte.

EDITAR:

Como es una columna int, puede ordenarlos numéricamente. Simplemente haga SELECT Ids FROM Table Order By Ids para obtener todos los ID y verificar las lagunas en el conjunto de datos devuelto.

Probablemente haya una manera más fluida de hacer esto, pero podría repetir los resultados con un cursor y compararlos con un INT variable que se incrementa a lo largo del bucle. Cuando encuentre un espacio (sin coincidencia), rompa el ciclo y use ese INT valor como su INSERT identificación.

No escribiré tu código por ti, pero esos son algunos pasos para que vayas en la dirección correcta. Debería ser un poco de programación realmente básica que debería poder manejar.

Espero que esto ayude.

EDICIÓN n.º 2:

Como han notado otros, su mejor movimiento es simplemente dejar los espacios. A menos que haya algún límite en la mesa en cuanto a longitud y los ID DEBEN ser 1-30 (raro), déjalo en paz. No hay ningún beneficio en llenar los vacíos.

EDICIÓN n.º 3:

Una cosa más a considerar:si realmente tiene que mantener 1-30 por alguna razón, no elimine sus filas. Agregue una columna para marcar cada fila como activa o no y luego simplemente actualice las filas que están inactivas cuando lo necesite y luego márquelas como activas. Esto es MUY raro, pero tu requisito es un poco raro, así que...