it-swarm-es.tech

¿Cómo reiniciar AUTO_INCREMENT en MySQL?

¿Cómo puedo/ reiniciar el AUTO_INCREMENT de un campo? Quiero que empiece a contar desde 1 otra vez.

1092
some Folk

Puede restablecer el contador con:

ALTER TABLE tablename AUTO_INCREMENT = 1

Para InnoDB no puede establecer el valor auto_increment inferior o igual al índice actual más alto. (cita de ViralPatel ):

Tenga en cuenta que no puede restablecer el contador a un valor menor o igual a cualquiera que ya se haya utilizado. Para MyISAM, si el valor es menor o igual al valor máximo actualmente en la columna AUTO_INCREMENT, el valor se restablece al máximo actual más uno. Para InnoDB, si el valor es menor que el valor máximo actual en la columna, no se produce ningún error y el valor de secuencia actual no se cambia.

Consulte¿Cómo restablecer un autoincremento de MySQL usando un valor MAX de otra tabla?sobre cómo obtener dinámicamente un valor aceptable.

1800
Niels
ALTER TABLE tablename AUTO_INCREMENT = 1
137
boobiq
SET  @num := 0;

UPDATE your_table SET id = @num := (@num+1);

ALTER TABLE your_table AUTO_INCREMENT =1;

Creo que esto lo hará.

65
nghiepit

Simplemente así:

ALTER TABLE tablename AUTO_INCREMENT = value;

referencia: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

53
fyr

enter image description hereHay una forma muy fácil con phpmyadmin en la pestaña "operaciones", puede configurar, en las opciones de la tabla, el aumento automático al número que desee.

38
Miles M.

La mejor solución que me funcionó:

ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED;
COMMIT;
ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT;
COMMIT;

Es rápido, funciona con innoDB, ¡y no necesito saber el valor máximo actual! De esta manera, el contador de incremento automático se reiniciará y se iniciará automáticamente a partir del valor máximo existente.

31
trust_words

Hay buenas opciones en Cómo restablecer la columna de autoincremento de MySQL

Tenga en cuenta que ALTER TABLE tablename AUTO_INCREMENT = value; hace no trabaja para InnoDB

19
Naz

Las respuestas mejor calificadas a esta pregunta recomiendan "ALTER yourtable AUTO_INCREMENT = value". Sin embargo, esto solo funciona cuando value en el cambio es mayor que el valor máximo actual de la columna de autoincremento. Según la documentación de MySQL 8 :

No puede restablecer el contador a un valor menor o igual al valor que está actualmente en uso. Tanto para InnoDB como para MyISAM, si el valor es menor o igual al valor máximo actual en la columna AUTO_INCREMENT, el valor se restablece al valor máximo actual de la columna AUTO_INCREMENT más uno.

En esencia, solo puede modificar AUTO_INCREMENT para aumentar el valor de la columna de autoincremento, no restablecerlo a 1, como lo solicita el OP en la segunda parte de la pregunta. Para las opciones que realmente le permiten establecer AUTO_INCREMENT hacia abajo desde su máximo actual, consulte Reordenar/restablecer la clave principal de incremento automático .

18
lreeder

Agregando una actualización porque la funcionalidad cambió en MySQL 5.6. A partir de MySQL 5.6 PUEDES usar la simple ALTER TABLE con InnoDB:

ALTER TABLE tablename AUTO_INCREMENT = 1;

Los documentos se actualizan para reflejar esto:

http://dev.mysql.com/doc/refman/5.6/en/alter-table.html

Mi prueba también muestra que la tabla NO se copia, el valor simplemente se cambia.

18
SeanN
ALTER TABLE news_feed DROP id

ALTER TABLE news_feed ADD  id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id)

Usé esto en algunos de mis scripts, el campo de identificación se elimina y luego se vuelve a agregar con la configuración anterior, todos los campos existentes en la tabla de la base de datos se completan con nuevos valores de incremento automático, esto también debería funcionar con InnoDB.

Tenga en cuenta que todos los campos dentro de la tabla serán contados y tendrán otros IDs.

12
Alin Razvan

También puede usar la sintaxis TRUNCATE tabla como esta: TRUNCATE TABLE table_name

¡CUIDADO! TRUNCATE TABLE your_table will eliminará todo en tu your_table !!

11
Manohar Kumar

es para mesa vacía:

ALTER TABLE `table_name` AUTO_INCREMENT = 1;

si tienes datos pero quieres ordenarlos, te recomiendo usar esto:

ALTER TABLE `table_name` DROP `auto_colmn`;
ALTER TABLE `table_name` ADD  `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`);
4

Aquí está mi solución, pero no recomendaré hacer esto si su columna tiene restricciones o está conectada como clave externa a otras tablas, ya que tendría efectos negativos o incluso no funcionarán.

> Primero: soltar la columna

ALTER TABLE tbl_name DROP COLUMN column_id

> Segundo: vuelva a crear la columna y configúrela como PRIMERA si la quiere como la primera columna que asumo.

ALTER TABLE tbl_access ADD COLUMN `access_id` int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST

¡Esto funciona bien!

3
bdalina

Simplemente puede truncar la tabla para restablecer la secuencia

TRUNCATE TABLE TABLE_NAME
1
Kunwar Babu

Intenté alterar la tabla y establecer auto_increment en 1, pero no funcionó. Resolví eliminar el nombre de la columna que estaba incrementando, luego crear una nueva columna con su nombre preferido y configurar esa nueva columna para que se incremente desde el inicio.

1
andromeda

El contador de incremento automático para una tabla se puede (re) configurar de dos maneras:

  1. Al ejecutar una consulta, como ya explicaron otros:

    ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;

  2. Usando Workbench u otra herramienta de diseño de base de datos visual. Voy a mostrar en Workbench cómo se hace, pero tampoco debería ser muy diferente en otras herramientas. Al hacer clic derecho sobre la tabla deseada y elegir Alter table en el menú contextual. En la parte inferior puede ver todas las opciones disponibles para modificar una tabla. Elija Options y obtendrá este formulario:  enter image description here

    Luego, simplemente configure el valor deseado en el campo Auto increment como se muestra en la imagen. Esto básicamente ejecutará la consulta que se muestra en la primera opción.

1
Kristijan Iliev

A partir de MySQL 5.6, el enfoque siguiente funciona más rápido debido a DDL en línea (nota algorithm=inplace):

alter table tablename auto_increment=1, algorithm=inplace;

1
artsafin

ALTER TABLE nombre de tabla AUTO_INCREMENT = 1

0
santosh mahule

Busqué en Google y encontré esta pregunta, pero la respuesta que realmente busco cumple con dos criterios:

  1. utilizando puramente consultas de MySQL
  2. restablecer una tabla existente auto-incremento a max (id) + 1

Como no pude encontrar exactamente lo que quiero aquí, he improvisado la respuesta de varias respuestas y la he compartido aquí.

Algunas cosas a tener en cuenta:

  1. la tabla en cuestión es InnoDB.
  2. la tabla usa el campo id con el tipo int como clave principal
  3. la única forma de hacer esto únicamente en MySQL es usar el procedimiento almacenado.
  4. mis imágenes a continuación están usando SequelPro como la GUI. Deberías poder adaptarlo en función de tu editor MySQL preferido.
  5. He probado esto en MySQL Ver 14.14 Distrib 5.5.61, para debian-linux-gnu

Paso 1: Crear procedimiento almacenado

crear un procedimiento almacenado como este:

DELIMITER //
CREATE PROCEDURE reset_autoincrement(IN tablename varchar(200))
BEGIN

      SET @get_next_inc = CONCAT('SELECT @next_inc := max(id) + 1 FROM ',tablename,';');
      PREPARE stmt FROM @get_next_inc; 
      EXECUTE stmt; 
      SELECT @next_inc AS result;
      DEALLOCATE PREPARE stmt; 

      set @alter_statement = concat('ALTER TABLE ', tablename, ' AUTO_INCREMENT = ', @next_inc, ';');
      PREPARE stmt FROM @alter_statement;
      EXECUTE stmt;
      DEALLOCATE PREPARE stmt;
END //
DELIMITER ;

Entonces ejecútalo.

Antes de ejecutarlo, se ve así cuando busca en Procedimientos almacenados en su base de datos.

 enter image description here

Cuando ejecuto, simplemente selecciono el procedimiento almacenado y presiono Ejecutar selección

 enter image description here

Nota: los delimitadores son cruciales. Por lo tanto, si copia y pega desde la parte superior de las respuestas seleccionadas en esta pregunta, tienden a no funcionar por este motivo.

Después de ejecutar, debería ver el procedimiento almacenado

 enter image description here

Si necesita cambiar el procedimiento almacenado, debe eliminar el procedimiento almacenado y luego seleccionar para ejecutar nuevamente.

Paso 2: llamar al procedimiento almacenado

Esta vez simplemente puede utilizar las consultas normales de MySQL.

call reset_autoincrement('products');

Originalmente de mis propias consultas de SQL, notas en https://simkimsia.com/library/sql-queries/#mysql-reset-autoinc y adaptadas para StackOverflow

0
Kim Stacks

Para actualizar la última más una identificación

 ALTER TABLE table_name AUTO_INCREMENT = 
 (SELECT (id+1) id FROM table_name order by id desc limit 1);
0
narasimharaosp