¿Cómo establecer el valor inicial y el incremento automático en MySQL?

288

¿Cómo configuro el valor inicial para una columna "id" en una tabla MySQL que comienza desde 1001?

Quiero hacer un inserto "INSERT INTO users (name, email) VALUES ('{$name}', '{$email}')";

Sin especificar el valor inicial para la columna id.

bbtang
fuente

Respuestas:

517

Utilizar este:

ALTER TABLE users AUTO_INCREMENT=1001;

o si aún no ha agregado una columna de identificación, también agréguela

ALTER TABLE users ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX (id);
Anatoliy
fuente
2
Me doy cuenta de que esto fue hace 7 años, pero ... ¿Puedo obtener una explicación de las partes de esta respuesta? ¿Qué hace ADD INDEXaquí? ¿Tengo que agregarlo en la misma declaración que la idcolumna, o puedo definir la idcolumna en el CREATE TABLEbloque y luego ADD INDEX(id)?
Michael Hoffmann
2
Heh, el tiempo pasa ... Claro, defínalo en CREATE TABLE si puedes hacerlo. La segunda parte de la respuesta "ALTER TABLE" implica que ya ha creado una tabla, y que probablemente ya esté implementada en algún lugar sin el índice adecuado, lo cual es necesario para que la primera "ALTER TABLE" funcione según lo previsto. Espero que esta explicación ayude.
Anatoliy
Sí, eso ayuda. Estaba mirando algunas muestras que usaban estas declaraciones de manera similar, y ahora tienen más sentido. Gracias.
Michael Hoffmann
1
La razón del ADD INDEX es porque sin él, si ya tiene una clave principal en una tabla existente, obtendrá there can be only one auto column and it must be defined as a key. Necesita el índice para que sea una clave MUL.
djsumdog
Intenté esto en una tabla que acaba de crearse sin agregar ninguna fila todavía. Parece que esto no funciona a menos que se haya agregado al menos 1 fila a la tabla primero.
Solomon Closson
54

MySQL: configure una clave primaria de incremento automático que comience en 1001:

Paso 1, crea tu tabla:

create table penguins(
  my_id       int(16) auto_increment, 
  skipper     varchar(4000),
  PRIMARY KEY (my_id)
)

Paso 2, configure el número de inicio para la clave primaria de incremento automático:

ALTER TABLE penguins AUTO_INCREMENT=1001;

Paso 3, inserte algunas filas:

insert into penguins (skipper) values("We need more power!");
insert into penguins (skipper) values("Time to fire up");
insert into penguins (skipper) values("kowalski's nuclear reactor.");

Paso 4, interpreta el resultado:

select * from penguins

huellas dactilares:

'1001', 'We need more power!'
'1002', 'Time to fire up'
'1003', 'kowalski\'s nuclear reactor'
Eric Leschinski
fuente
1
¿Cómo debo hacer si quiero establecer un id <1000 para pingüinos especiales?
William Hu
1
Puede insertar cualquier ID libre, simplemente colóquelo en la lista de columnas: insert into penguins (my_id, skipper) values(999, "explicit id");(cuando se use en 0lugar del 999valor de incremento automático se insertará)
hellcode
32

MySQL Workbench

Si desea evitar escribir sql, también puede hacerlo en MySQL Workbench haciendo clic derecho en la tabla, elija "Alterar tabla ..." en el menú.

Cuando se abra la vista de estructura de la tabla, vaya a la pestaña "Opciones" (en la parte inferior inferior de la vista) y configure el campo "Incremento automático" en el valor del siguiente número de incremento automático.

No olvide presionar "Aplicar" cuando haya terminado con todos los cambios.

PhpMyAdmin:

Si está utilizando phpMyAdmin, puede hacer clic en la tabla en la navegación de la izquierda, ir a la pestaña "Operaciones" y en Opciones de tabla cambiar el valor de AUTO_INCREMENTO y hacer clic en Aceptar.

Bojan Hrnkas
fuente
1
¿Estás hablando de phpMyAdmin?
Pacerier
1
No, creo que está hablando de MySQL Workbench.
Saturnian
@Saturnian, sí, tienes razón, me refería al Workbench. Editaré mi publicación para aclarar eso.
Bojan Hrnkas
phpMyAdmin resolvió un problema de autoincremento en un solo paso, intenté seguir la ruta del código y no funcionaba.
tekagami
11

Primero debe agregar una columna para el incremento automático

alter table users add column id int(5) NOT NULL AUTO_INCREMENT FIRST

Esta consulta para agregar columna al principio. Ahora debe restablecer el valor inicial de incremento automático. Entonces usa esta consulta

alter table users AUTO_INCREMENT=1001

Ahora tu mesa comenzó con 1001

Juan
fuente
6

También puede establecerlo en la create tabledeclaración.

`CREATE TABLE(...) AUTO_INCREMENT=1000`
ospider
fuente
5

Además, en PHPMyAdmin , puede seleccionar la tabla del lado izquierdo (lista de tablas) y luego hacer esto yendo allí.
Pestaña Operaciones-> Opciones de tabla-> AUTO_INCREMENTO.

Ahora, establezca sus valores y luego presione Ir debajo de las Opciones de tabla Bo x.

Mostafa Fallah
fuente
4

Para esto tienes que establecer el AUTO_INCREMENTvalor

ALTER TABLE tablename AUTO_INCREMENT = <INITIAL_VALUE>

Ejemplo

ALTER TABLE tablename AUTO_INCREMENT = 101
Arun Kasyakar
fuente
3

Alternativamente, si eres demasiado vago para escribir la consulta SQL. Entonces esta solución es para ti. ingrese la descripción de la imagen aquí

  1. Abra phpMyAdmin
  2. Seleccione la tabla deseada
  3. Haga clic en la pestaña Operaciones
  4. Establezca su Valor inicial deseado para AUTO_INCREMENT
  5. Hecho..!
Laxmikant Bhumkar
fuente