Come impostare il valore iniziale e l'incremento automatico in MySQL?


288

Come posso impostare il valore iniziale per una colonna "id" in una tabella MySQL che inizia da 1001?

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

Senza specificare il valore iniziale per la colonna ID.

Risposte:


517

Usa questo:

ALTER TABLE users AUTO_INCREMENT=1001;

o se non hai già aggiunto una colonna ID, aggiungila anche tu

ALTER TABLE users ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX (id);

2
Mi rendo conto che era 7 anni fa, ma ... Posso avere una spiegazione delle parti di questa risposta? Che cosa ADD INDEXfa qui? Devo aggiungerlo nella stessa istruzione della idcolonna o posso definire la idcolonna nel CREATE TABLEblocco e quindi ADD INDEX(id)?
Michael Hoffmann,

2
Heh, il tempo passa ... Certo, definiscilo in CREATE TABLE se sei in grado di farlo. La seconda parte della risposta "ALTER TABLE" implica che hai già creato una tabella e che probabilmente è già stata distribuita da qualche parte senza un indice adeguato, necessario per far funzionare la prima "ALTER TABLE" come previsto. Spero che questa spiegazione sia d'aiuto.
Anatoliy,

Sì, questo aiuta. Stavo guardando alcuni esempi che utilizzavano queste affermazioni in modo simile e ora hanno più senso. Grazie.
Michael Hoffmann,

1
Il motivo di ADD INDEX è perché senza di esso, se hai già una chiave primaria su una tabella esistente, otterrai there can be only one auto column and it must be defined as a key. È necessario l'indice, quindi sarà una chiave MUL.
djsumdog,

Ho provato questo su un tavolo che è stato appena creato senza alcuna riga aggiunta ancora. Sembra che questo non funzioni a meno che non sia stata aggiunta prima almeno una riga alla tabella.
Solomon Closson,

54

MySQL: imposta una chiave primaria a incremento automatico che inizia da 1001:

Passaggio 1, crea la tua tabella:

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

Passaggio 2, impostare il numero iniziale per la chiave primaria di incremento automatico:

ALTER TABLE penguins AUTO_INCREMENT=1001;

Passaggio 3, inserire alcune righe:

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.");

Passaggio 4, interpretare l'output:

select * from penguins

stampe:

'1001', 'We need more power!'
'1002', 'Time to fire up'
'1003', 'kowalski\'s nuclear reactor'

1
Come devo fare se voglio impostare un ID <1000 per pinguini speciali?
William Hu,

1
È possibile inserire qualsiasi ID libero, basta inserirlo nell'elenco delle colonne: insert into penguins (my_id, skipper) values(999, "explicit id");(quando si utilizza 0invece 999il valore di incremento automatico verrà inserito)
hellcode

32

MySQL Workbench

Se vuoi evitare di scrivere sql, puoi anche farlo in MySQL Workbench facendo clic con il tasto destro del mouse sulla tabella, scegli "Alter Table ..." nel menu.

Quando si apre la vista della struttura della tabella, vai alla scheda "Opzioni" (nella parte inferiore inferiore della vista) e imposta il campo "Incremento automatico" sul valore del numero di incremento automatico successivo.

Non dimenticare di premere "Applica" quando hai finito con tutte le modifiche.

PhpMyAdmin:

Se si utilizza phpMyAdmin, è possibile fare clic sulla tabella nella barra di navigazione a sinistra, andare alla scheda "Operazioni" e in Opzioni tabella modificare il valore AUTO_INCREMENT e fare clic su OK.


1
Stai parlando di phpMyAdmin?
Pacerier,

1
No, penso che stia parlando di MySQL Workbench.
Saturno,

@Saturnian, sì hai ragione, intendevo il banco di lavoro. Modificherò il mio post per chiarirlo.
Bojan Hrnkas,

phpMyAdmin ha risolto un problema di autoincremento in un solo passaggio, ho provato a seguire la route del codice e non funzionava.
Tekagami,

11

Per prima cosa devi aggiungere una colonna per l'incremento automatico

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

Questa query per aggiungere la colonna all'inizio. Ora devi ripristinare il valore iniziale dell'incremento automatico. Quindi usa questa query

alter table users AUTO_INCREMENT=1001

Ora il tuo tavolo è iniziato con 1001


6

Potresti anche impostarlo nella create tabledichiarazione.

`CREATE TABLE(...) AUTO_INCREMENT=1000`

5

Inoltre, in PHPMyAdmin , è possibile selezionare la tabella dal lato sinistro (elenco di tabelle), quindi procedere andando lì.
Scheda Operazioni-> Opzioni tabella-> AUTO_INCREMENT.

Ora, imposta i tuoi valori e poi premi Vai sotto la Tabella Opzioni Bo x.


4

Per questo devi impostare il AUTO_INCREMENTvalore

ALTER TABLE tablename AUTO_INCREMENT = <INITIAL_VALUE>

Esempio

ALTER TABLE tablename AUTO_INCREMENT = 101

3

In alternativa, se sei troppo pigro per scrivere la query SQL. Quindi questa soluzione è per te. inserisci qui la descrizione dell'immagine

  1. Apri phpMyAdmin
  2. Seleziona la tabella desiderata
  3. Fai clic sulla scheda Operazioni
  4. Imposta il valore iniziale desiderato per AUTO_INCREMENT
  5. Fatto..!
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.