Cómo resetear un autoincremental en MySQL

Cuando se trabaja con bases de datos MySQL es habitual utilizar los autoincrementales para crear las claves primarias de las tablas de datos. Este tipo de campos lo que hacen es asignar un entero diferente a cada nuevo registro, añadiendo 1 al anterior valor asignado, empezando por el 1. Por lo tanto, si borramos toda la información de la tabla y generamos un nuevo registro podremos comprobar como no obtiene un 1 sino el valor que hubiera correspondido antes de borrar los registros.

Si necesitamos borrar la tabla y resetear este número para reiniciar la numeración en 1 la opción más sencilla es ejecutar la siguiente sentencia SQL.

TRUNCATE nombre_tabla;

Esta instrucción vacía la tabla y resetea el autoincremental a su valor inicial.

Si lo que queremos es hacer que el valor autoincremental tome un valor determinado es posible utilizar la siguiente sentencia, que modifica la tabla cambiando el valor de autoincremento a 1000 (o al valor que queramos). Hay que tener en cuenta que este número debe ser mayor que cualquier id de la tabla.

ALTER TABLE nombre_tabla AUTO_INCREMENT=1000

Agradecimiento a Demiurgo y Narion por aportar la opción de Truncate en vez de alterar la tabla asignando un 1 al autoincremental.

Twitter Digg Delicious Stumbleupon Technorati Facebook Email

9 Respuestas para “Cómo resetear un autoincremental en MySQL”

  1. Perfecto apunte, pero surge un dilema.

    Imagina una base de datos de 20 registros. Borramos los 10 primeros. Reseteamos el autoincremental. Vamos insertando registros. ¿Qué sucedería con el registro 11? Imagino que no da error alguno y prosigue con la numeración libre, que sería la 21.

    ¿Sería correcto?

  2. Pues tras probarlo en vivo y en directo te puedo confirmar que aunque resetees el autoincremental, si sigue habiendo información en la tabla, el siguiente id no sería 1, si no el siguiente al último id. En el ejemplo que planteas se insertarían los registros a partir del 21.

    La cosa cambia si lo que haces es insertar 20 registros y poner el autoincremental a 100, en este caso sí que se el siguiente id sería 100.

  3. Si borramos toda la información de la tabla lo ideal es hacerlo con el comando truncate, vacía la tabla y resetea los campos autoincrementales

  4. Es interesante la sentencia, no la conocía, aunque el objetivo para el que explicas su funcionamiento es una perdida de tiempo.

    Para eliminar el contenido de una tabla y resetar el valor autoincrement es mejor usar el TRUNCATE.

    La sentencia aqui explicada es más intenresante si deseas que el autoincrement comience por un valor en concreto, pero no para resetearlo.

    Un saludo.

  5. Buenas tardes, quisiera saber con hacer para que una campo autonumerico tenga un valor inicial y un valor final , digamos que desde 10 hasta 20 y de esa manera controlar que se ingresen registros desde 10 hasta 20.

    Saludos espero su respuesta.
    katerineqv@yahoo.com

  6. Muchas gracias!!! me fue de gran utilidad.

  7. Gracias.
    Me sirvió el comando sin TRUNCATE y solo dejando el AUTO_INCREMENT=0

    Vale..

Trackbacks/Pingbacks

  1. Resetear campo Autoincremental en MySQL - colorate - 19. Ene, 2009

    […] Vía: Eslomas.com […]

  2. Vulnerabilidades CSRF en aplicaciones web | servidopolis - 05. Abr, 2009

    […] .NET […]