Wie kann ich das eines Feldes zurücksetzenAUTO_INCREMENT
?
Ich möchte, dass es wieder anfängt zu zählen 1
.
mysql
sql
auto-increment
Home Run
quelle
quelle
TRUNCATE TABLE yourTableName;
Antworten:
Sie können den Zähler zurücksetzen mit:
Für InnoDB können Sie den
auto_increment
Wert nicht niedriger oder gleich dem höchsten aktuellen Index setzen. (Zitat aus ViralPatel ):Siehe Zurücksetzen eines MySQL AutoIncrement mithilfe eines MAX-Werts aus einer anderen Tabelle. wie man dynamisch einen akzeptablen Wert erhält.
quelle
circular reference
curcular reference
?quelle
Ich denke, das wird es tun
quelle
UPDATE
aktualisieren Sie alle Werte in derid
Spalte.Einfach so:
Referenz: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
quelle
reset
bedeutet, es auf den Standardwert zu setzen ... damit Sie "Wert" durch 1 ersetzen könnenMit phpmyadmin gibt es eine sehr einfache Möglichkeit, auf der Registerkarte "Operationen" in den Tabellenoptionen die automatische Inkrementierung auf die gewünschte Zahl festzulegen.
quelle
Die beste Lösung, die für mich funktioniert hat:
Es ist schnell, funktioniert mit innoDB und ich muss den aktuellen Maximalwert nicht kennen! Auf diese Weise wird der Auto-Inkrement-Zähler zurückgesetzt und automatisch ab dem vorhandenen Maximalwert gestartet.
quelle
SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = 'my_table' AND table_schema = DATABASE( ) ;
5.6.15
, währendALTER TABLE tablename AUTO_INCREMENT = 1
dies nicht der Fall ist .Die am besten bewerteten Antworten auf diese Frage empfehlen alle "ALTER yourtable AUTO_INCREMENT = value". Dies funktioniert jedoch nur, wenn
value
in der Änderung der aktuelle Maximalwert der Spalte für die automatische Inkrementierung größer ist. Gemäß der MySQL 8-Dokumentation :Im Wesentlichen können Sie AUTO_INCREMENT nur ändern, um den Wert der Autoincrement-Spalte zu erhöhen, und nicht auf 1 zurücksetzen, wie das OP im zweiten Teil der Frage fragt. Informationen zu Optionen, mit denen Sie AUTO_INCREMENT von seinem aktuellen Maximum nach unten setzen können, finden Sie unter Primärschlüssel für automatische Inkrementierung neu anordnen / zurücksetzen .
quelle
Hinzufügen eines Updates, da sich die Funktionalität in MySQL 5.6 geändert hat. Ab MySQL 5.6 können Sie die einfache ALTER TABLE mit InnoDB verwenden:
Die Dokumente werden aktualisiert, um dies widerzuspiegeln:
http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
Meine Tests zeigen auch, dass die Tabelle NICHT kopiert wird, der Wert wird einfach geändert.
quelle
In der Spalte zum Zurücksetzen der MySQL-Autoincrement-Spalte finden Sie gute Optionen
Beachten Sie, dass
ALTER TABLE tablename AUTO_INCREMENT = value;
dies für InnoDB nicht funktioniertquelle
DELETE
(oderROLLBACK
) stellt keine IDs wieder her. Eine Ausnahme: Nach einem Neustart (oder Absturz) wird die nächste ID berechnetMAX(id)+1
, wodurch gelöschte IDs am Ende effektiv wiederhergestellt werden . Ausnahme von der Ausnahme: MySQL 8.0 lässt diese IDs unbenutzt.Ich habe dies in einigen meiner Skripte verwendet, das ID-Feld wird gelöscht und dann mit den vorherigen Einstellungen wieder hinzugefügt. Alle vorhandenen Felder in der Datenbanktabelle werden mit neuen automatischen Inkrementwerten gefüllt. Dies sollte auch mit InnoDB funktionieren.
Beachten Sie, dass alle Felder in der Tabelle nachgezählt werden und andere IDs haben !!!.
quelle
Sie können die Syntaxtabelle auch
TRUNCATE
folgendermaßen verwenden:TRUNCATE TABLE table_name
IN ACHT NEHMEN!!
TRUNCATE TABLE your_table
wird alles löschen in Ihremyour_table
!!quelle
TRUNCATE
auch ALLE Ihre Zeilen in der angegebenen Tabelle gelöscht werden !TRUNCATE
werden auch dieauto_increment
Felder zurückgesetzt? Mein Anwendungsfall besteht darin, die alten Daten in der Tabelle zu löschen und die IDs für neue Daten erneut von 1 zu starten (stellen Sie sich vor, Sie löschen die Tabelle für die ordnungsgemäße Verwendung nach Abschluss des Tests). Ich dachte ich müssteDROP
den ganzen Tisch undCREATE
es wieder.auto_increment
Wert, verwendenDELETE FROM
stattTRUNCATE
.es ist für leere Tabelle:
Wenn Sie Daten haben, diese aber aufräumen möchten, empfehle ich Folgendes:
quelle
Hier ist meine Lösung, aber ich rate nicht dazu, wenn Ihre Spalte Einschränkungen aufweist oder als Fremdschlüssel mit anderen Tabellen verbunden ist, da dies negative Auswirkungen hätte oder nicht einmal funktioniert.
> Zuerst: Löschen Sie die Spalte
> Zweitens: Erstellen Sie die Spalte neu und legen Sie sie als ERSTE fest, wenn Sie sie als erste Spalte verwenden möchten.
Das funktioniert gut!
quelle
Ab MySQL 5.6 funktioniert der folgende Ansatz aufgrund von Online-DDL schneller (Hinweis
algorithm=inplace
):alter table tablename auto_increment=1, algorithm=inplace;
quelle
Sie können die Tabelle einfach abschneiden, um die Sequenz zurückzusetzen
quelle
Ich habe versucht, die Tabelle zu ändern und auto_increment auf 1 zu setzen, aber es hat nicht funktioniert. Ich habe beschlossen, den inkrementierten Spaltennamen zu löschen, dann eine neue Spalte mit Ihrem bevorzugten Namen zu erstellen und diese neue Spalte von Anfang an auf Inkrement zu setzen.
quelle
Der automatische Inkrementzähler für eine Tabelle kann auf zwei Arten (neu) eingestellt werden:
Durch Ausführen einer Abfrage, wie andere bereits erklärt:
ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;
Verwenden von Workbench oder einem anderen Tool zum Entwerfen visueller Datenbanken. Ich werde in Workbench zeigen, wie es gemacht wird - aber es sollte auch in anderen Tools nicht viel anders sein. Klicken Sie mit der rechten Maustaste auf die gewünschte Tabelle und wählen Sie
Alter table
aus dem Kontextmenü. Unten sehen Sie alle verfügbaren Optionen zum Ändern einer Tabelle. Wählen SieOptions
und Sie erhalten dieses Formular:Stellen Sie dann einfach den gewünschten Wert in das Feld ein,
Auto increment
wie im Bild gezeigt. Dadurch wird im Wesentlichen die in der ersten Option gezeigte Abfrage ausgeführt.quelle
So aktualisieren Sie die neueste plus eine ID
quelle
ALTER TABLE Tabellenname AUTO_INCREMENT = 1
quelle
Ich habe gegoogelt und diese Frage gefunden, aber die Antwort, nach der ich wirklich suche, erfüllt zwei Kriterien:
Da ich hier nicht genau das finden konnte, was ich will, habe ich die Antwort aus verschiedenen Antworten zusammengeschustert und hier geteilt.
Einige Dinge zu beachten:
id
mit dem Typint
als PrimärschlüsselSchritt 1: Gespeicherte Prozedur erstellen
Erstellen Sie eine gespeicherte Prozedur wie folgt:
Dann führen Sie es aus.
Vor dem Ausführen sieht es so aus, wenn Sie in Ihrer Datenbank unter Gespeicherte Prozeduren nachsehen.
Wenn ich laufe, wähle ich einfach die gespeicherte Prozedur aus und drücke Auswahl ausführen
Hinweis: Der Teil der Begrenzer ist entscheidend. Wenn Sie also die oben ausgewählten Antworten in dieser Frage kopieren und einfügen, funktionieren sie aus diesem Grund normalerweise nicht.
Nachdem ich ausgeführt habe, sollte ich die gespeicherte Prozedur sehen
Wenn Sie die gespeicherte Prozedur ändern müssen, müssen Sie die gespeicherte Prozedur löschen und dann auswählen, um sie erneut auszuführen.
Schritt 2: Rufen Sie die gespeicherte Prozedur auf
Dieses Mal können Sie einfach normale MySQL-Abfragen verwenden.
Ursprünglich aus meinen eigenen SQL-Abfragen in https://simkimsia.com/library/sql-queries/#mysql-reset-autoinc und angepasst für StackOverflow
quelle
quelle
Versuchen Sie, diese Abfrage auszuführen
Oder versuchen Sie diese Abfrage für das automatische Zurücksetzen inkrementieren
Stellen Sie Auto Increment ein und führen Sie diese Abfrage aus
quelle
Ich empfehle Ihnen, zum Abfragebrowser zu gehen und Folgendes zu tun:
Auto_increment sollte auf eins zurückgesetzt werden, sobald Sie eine neue Zeile in die Tabelle eingeben.
Ich weiß nicht, was passieren wird, wenn Sie versuchen, eine Zeile hinzuzufügen, in der bereits ein Feldwert für auto_increment vorhanden ist.
Ich hoffe das hilft!
quelle
Am besten entfernen Sie das Feld mit AI und fügen es mit AI erneut hinzu. Funktioniert für alle Tabellen
quelle