Tuve una llave primaria de incremento automático "Student_ID", insertó una línea en la tabla. Consiguió que Student_ID es igual a 1 . Entonces I deleted this line y inserted new line. La nueva línea obtuvo Student_ID de 2 , en lugar de 1 . ¿Por qué? ¿Cómo cambiarlo?

Lo intenté:

ALTER TABLE students DROP PRIMARY KEY, ADD PRIMARY KEY (student_id);

Sin embargo, no tenía resultados.

-1
Cognosce 29 may. 2021 a las 12:31

4 respuestas

La mejor respuesta

Así es como funcionan las teclas autoincrementas. Cada operación de autoinscrement está garantizada para devolver un nuevo valor único. No hay lógica integrada en el servidor de la base de datos para intentar averiguar si algunos valores están disponibles para reutilizar porque se eliminaron sus filas.

¿Por qué no? A menudo, estos valores clave se almacenan en otras tablas (implementando la parte relacional del sistema de gestión de bases de datos relacionales). Si se reutilizaran, las relaciones se corrompan.

Puede restablecer el siguiente valor de incremento automático con

ALTER TABLE table_name AUTO_INCREMENT = value;

Pero, si haces esto, puedes arruinar las cosas bastante mal. No haga esto hasta que obtenga experiencia con las operaciones de unión en valores autoinscrement.

1
O. Jones 29 may. 2021 a las 09:46

Nunca debe modificar el valor de una clave de incremento automático. Están allí para identificar de forma única un registro, y las claves primarias pueden tener brechas en ellos sin consecuencias.

Desde mysql Página de documentación:

Para restablecer el valor actual de incremento automático:

`ALTER TABLE t1 AUTO_INCREMENT = 13`; 

No puede restablecer el contador a un valor menor o igual al valor que está actualmente en uso.

2
auditt _98 29 may. 2021 a las 09:39

Así es como auto_increment works, aumenta después de cada INSERT. Nunca llena los agujeros que quedan después de eliminar algún registro.

Si realmente desea reutilizar el student_id = 1 después de eliminar, puede INSERT usando INSERT INTO students (student_id) VALUES (1).

Documentos MySQL

2
marcos 29 may. 2021 a las 09:43

Porque así funciona Auto_Increment en MySQL. Nunca asigna el mismo valor de ID dos veces. Puede intentar cambiar el comportamiento actual eliminando AUTO_INCREMENTE de su columna PK y asignando valores Student_ID a mano si realmente necesita. Sin embargo, no recomendaría este enfoque y me sorprendería con valores automáticos incrementados por razones de consistencia.

1
Loupeznik 29 may. 2021 a las 09:43