Wie setze ich den Anfangswert und das automatische Inkrement in MySQL?


288

Wie setze ich den Anfangswert für eine "id" -Spalte in einer MySQL-Tabelle, die bei 1001 beginnt?

Ich möchte eine Einfügung machen "INSERT INTO users (name, email) VALUES ('{$name}', '{$email}')";

Ohne Angabe des Anfangswertes für die ID-Spalte.

Antworten:


516

Benutze das:

ALTER TABLE users AUTO_INCREMENT=1001;

oder wenn Sie noch keine ID-Spalte hinzugefügt haben, fügen Sie diese ebenfalls hinzu

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

2
Mir ist klar, dass dies vor 7 Jahren war, aber ... Kann ich eine Erklärung für die Teile dieser Antwort bekommen? Was macht ADD INDEXhier? Muss ich es in derselben Anweisung wie die idSpalte hinzufügen oder kann ich die idSpalte im CREATE TABLEBlock definieren und dann ADD INDEX(id)?
Michael Hoffmann

2
Heh, die Zeit vergeht ... Sicher, definieren Sie es in CREATE TABLE, wenn Sie dazu in der Lage sind. Der zweite Teil der Antwort "ALTER TABLE" impliziert, dass Sie bereits eine Tabelle erstellt haben und diese wahrscheinlich bereits an einem Ort ohne richtigen Index bereitgestellt wurde, der erforderlich ist, damit die erste "ALTER TABLE" wie beabsichtigt funktioniert. Ich hoffe diese Erklärung hilft.
Anatoliy

Ja, das hilft. Ich habe mir einige Beispiele angesehen, die diese Aussagen auf ähnliche Weise verwendeten, und sie sind jetzt sinnvoller. Danke dir.
Michael Hoffmann

1
Der Grund für ADD INDEX liegt darin, dass Sie ohne INDEX erhalten, wenn Sie bereits einen Primärschlüssel für eine vorhandene Tabelle haben there can be only one auto column and it must be defined as a key. Sie benötigen den Index, damit er ein MUL-Schlüssel ist.
DJSUMDOG

Ich habe dies an einer Tabelle versucht, die gerade erstellt wurde, ohne dass noch Zeilen hinzugefügt wurden. Dies funktioniert anscheinend nur, wenn mindestens 1 Zeile zuerst zur Tabelle hinzugefügt wurde.
Solomon Closson

54

MySQL - Richten Sie einen automatisch inkrementierenden Primärschlüssel ein, der bei 1001 beginnt:

Schritt 1, erstellen Sie Ihre Tabelle:

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

Schritt 2: Legen Sie die Startnummer für den Primärschlüssel für die automatische Inkrementierung fest:

ALTER TABLE penguins AUTO_INCREMENT=1001;

Schritt 3, fügen Sie einige Zeilen ein:

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

Schritt 4, interpretieren Sie die Ausgabe:

select * from penguins

Drucke:

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

1
Wie soll ich vorgehen, wenn ich eine ID <1000 für spezielle Pinguine festlegen möchte?
William Hu

1
Sie können eine beliebige freie ID einfügen, insert into penguins (my_id, skipper) values(999, "explicit id");indem Sie sie einfach in die Spaltenliste einfügen: (bei Verwendung wird 0anstelle des 999automatischen Inkrementwerts ein Wert eingefügt)
Hellcode

32

MySQL Workbench

Wenn Sie das Schreiben von SQL vermeiden möchten, können Sie dies auch in MySQL Workbench tun, indem Sie mit der rechten Maustaste auf die Tabelle klicken und im Menü "Tabelle ändern ..." auswählen.

Wenn die Tabellenstrukturansicht geöffnet wird, wechseln Sie zur Registerkarte "Optionen" (unten in der Ansicht) und setzen Sie das Feld "Auto Increment" auf den Wert der nächsten Autoincrement-Nummer.

Vergessen Sie nicht, auf "Übernehmen" zu klicken, wenn Sie mit allen Änderungen fertig sind.

PhpMyAdmin:

Wenn Sie phpMyAdmin verwenden, können Sie in der linken Navigation auf die Tabelle klicken, zur Registerkarte "Operationen" wechseln und unter Tabellenoptionen den Wert AUTO_INCREMENT ändern und auf OK klicken.


1
Sprechen Sie über phpMyAdmin?
Pacerier

1
Nein, ich denke, er spricht über die MySQL Workbench.
Saturnian

@ Saturnian, ja du hast recht, ich meinte die Workbench. Ich werde meinen Beitrag bearbeiten, um dies zu verdeutlichen.
Bojan Hrnkas

phpMyAdmin hat ein Problem mit der automatischen Inkrementierung in einem Schritt behoben. Ich habe versucht, den Code-Weg zu gehen, und es hat nicht funktioniert.
Tekagami

11

Zuerst müssen Sie eine Spalte für die automatische Inkrementierung hinzufügen

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

Diese Abfrage zum Hinzufügen einer Spalte zuerst. Jetzt müssen Sie den Anfangswert für die automatische Inkrementierung zurücksetzen. Verwenden Sie also diese Abfrage

alter table users AUTO_INCREMENT=1001

Jetzt begann Ihre Tabelle mit 1001


6

Sie können es auch in der create tableAnweisung festlegen .

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

5

In PHPMyAdmin können Sie auch eine Tabelle von der linken Seite (Liste der Tabellen) auswählen und dann dorthin gehen.
Registerkarte Operationen-> Tabellenoptionen-> AUTO_INCREMENT.

Stellen Sie nun Ihre Werte ein und drücken Sie unter den Tabellenoptionen Bo x auf Los .


4

Dafür muss man AUTO_INCREMENTWert setzen

ALTER TABLE tablename AUTO_INCREMENT = <INITIAL_VALUE>

Beispiel

ALTER TABLE tablename AUTO_INCREMENT = 101

3

Alternativ, wenn Sie zu faul sind, um die SQL-Abfrage zu schreiben. Dann ist diese Lösung genau das Richtige für Sie. Geben Sie hier die Bildbeschreibung ein

  1. Öffnen Sie phpMyAdmin
  2. Wählen Sie die gewünschte Tabelle aus
  3. Klicken Sie auf die Registerkarte Vorgänge
  4. Stellen Sie den gewünschten Anfangswert für AUTO_INCREMENT ein
  5. Getan..!
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.