@VasiliiSuricov You can change this option with ALTER TABLE, but in that case the new value must be higher than the highest value which is present in the AUTO_INCREMENT column.source Si no hay un valor más alto que el que desea configurar su auto_incrementcolumna ed, también puede disminuir el valor. ( documentación de mysql )
seyfahni
Respuestas:
520
Puede usar ALTER TABLEpara cambiar el valor inicial de auto_increment:
MySQL 5.6 tenía un error que no le permitía disminuir el AUTO_INCREMENTvalor, pero se ha corregido en 5.6.16 y 5.7.4, consulte bugs.mysql.com/bug.php?id=69882
Daniel Vandersluis
3
¡Eche un vistazo a la advertencia de cosimo sobre la reconstrucción de la mesa si hace esto!
h00ligan
15
Para aclarar: Establecer el valor inicial en 5, significa que el próximo inserto será 5.
Steen Schütt
97
Sí, puedes usar la ALTER TABLE t AUTO_INCREMENT = 42declaración. Sin embargo, debe tener en cuenta que esto provocará la reconstrucción de toda su tabla, al menos con InnoDB y ciertas versiones de MySQL. Si tiene un conjunto de datos ya existente con millones de filas, podría llevar mucho tiempo completarlo .
En mi experiencia, es mejor hacer lo siguiente:
BEGIN WORK;-- You may also need to add other mandatory columns and valuesINSERTINTO t (id)VALUES(42);ROLLBACK;
De esta forma, incluso si revierte la transacción, MySQL mantendrá el valor de incremento automático y el cambio se aplicará instantáneamente.
Puede verificar esto emitiendo una SHOW CREATE TABLE tdeclaración. Deberías ver:
> SHOW CREATETABLE t \G
***************************1.row***************************Table: t
CreateTable:CREATETABLE`t`(...) ENGINE=InnoDB AUTO_INCREMENT=43...
¡GRACIAS! SET foreign_key_checks = 0;También es útil para esto.
dnozay
¡Brillante idea! Nitpick: en SHOW CREATE TABLE trealidad regresará 43, es decir, el siguiente valor después de la inserción 42.
petrkotek
2
@cosimo, espera, ¿no es esto indocumentado ? ¿El manual decía que debería funcionar de esa manera? Si no, puede romperse en una configuración mysql diferente (futura).
Pacerier
1
@Pacerier sí, tienes razón. Esto depende de la forma en que MySQL funciona actualmente. Puede que no funcione así en el futuro. Sin embargo, dado el historial de MySQL, supongo que continuará funcionando de esa manera durante mucho tiempo.
Cosimo
@cosimo, espero que lo documenten para que un código confiable realmente pueda usar este buen truco. A partir de ahora, el código que quiere ser confiable no puede usar esto.
Pacerier
13
Cómo incrementar automáticamente en uno, comenzando en 10 en MySQL:
createtable foobar(
id INT PRIMARYKEY AUTO_INCREMENT,
moobar VARCHAR(500));ALTERTABLE foobar AUTO_INCREMENT=10;INSERTINTO foobar(moobar)values("abc");INSERTINTO foobar(moobar)values("def");INSERTINTO foobar(moobar)values("xyz");select*from foobar;'10','abc''11','def''12','xyz'
Este auto incrementa la columna de identificación en una a partir de 10.
Incremento automático en MySQL en 5, comenzando en 10:
droptable foobar
createtable foobar(
id INT PRIMARYKEY AUTO_INCREMENT,
moobar VARCHAR(500));SET@@auto_increment_increment=5;ALTERTABLE foobar AUTO_INCREMENT=10;INSERTINTO foobar(moobar)values("abc");INSERTINTO foobar(moobar)values("def");INSERTINTO foobar(moobar)values("xyz");select*from foobar;'11','abc''16','def''21','xyz'
Este auto incrementa la columna de identificación en 5 cada vez, comenzando en 10.
También puedes hacerlo usando phpmyadmin. Simplemente seleccione la tabla que vaya a acciones. Y cambie el incremento automático debajo de las opciones de la tabla. No olvides hacer clic en Inicio
You can change this option with ALTER TABLE, but in that case the new value must be higher than the highest value which is present in the AUTO_INCREMENT column.
source Si no hay un valor más alto que el que desea configurar suauto_increment
columna ed, también puede disminuir el valor. ( documentación de mysql )Respuestas:
Puede usar
ALTER TABLE
para cambiar el valor inicial de auto_increment:Consulte la referencia de MySQL para más detalles.
fuente
AUTO_INCREMENT
valor, pero se ha corregido en 5.6.16 y 5.7.4, consulte bugs.mysql.com/bug.php?id=69882Sí, puedes usar la
ALTER TABLE t AUTO_INCREMENT = 42
declaración. Sin embargo, debe tener en cuenta que esto provocará la reconstrucción de toda su tabla, al menos con InnoDB y ciertas versiones de MySQL. Si tiene un conjunto de datos ya existente con millones de filas, podría llevar mucho tiempo completarlo .En mi experiencia, es mejor hacer lo siguiente:
De esta forma, incluso si revierte la transacción, MySQL mantendrá el valor de incremento automático y el cambio se aplicará instantáneamente.
Puede verificar esto emitiendo una
SHOW CREATE TABLE t
declaración. Deberías ver:fuente
SET foreign_key_checks = 0;
También es útil para esto.SHOW CREATE TABLE t
realidad regresará43
, es decir, el siguiente valor después de la inserción42
.Cómo incrementar automáticamente en uno, comenzando en 10 en MySQL:
Este auto incrementa la columna de identificación en una a partir de 10.
Incremento automático en MySQL en 5, comenzando en 10:
Este auto incrementa la columna de identificación en 5 cada vez, comenzando en 10.
fuente
Procedimiento para corregir automáticamente el valor AUTO_INCREMENT de la tabla
fuente
Si necesita este procedimiento para nombres de campo variables en lugar de
id
esto, podría ser útil:fuente
También puedes hacerlo usando phpmyadmin. Simplemente seleccione la tabla que vaya a acciones. Y cambie el incremento automático debajo de las opciones de la tabla. No olvides hacer clic en Inicio
fuente
simplemente exporta la tabla con datos ... luego copia su sql like
ahora cambie el valor de incremento automático y ejecute sql.
fuente