2017-02-22 1 views
0

In meiner Tabelle gibt es Spalte Name ID, die Auto Inkrement Integer ist. Wenn ich Tabelle abschneide und dann versuche, Einfügeabfrage durchzuführen, beginnt sie bei 1, aber wenn ich den Vorgang lösche und dann versuche, einzufügen, wird der Vorgang vom vorherigen Wert fortgesetzt. Warum führt die Einfügeabfrage beim Löschen und Abschneiden eine andere Funktion aus? Es sollte immer bei 1 beginnen, wenn kein Eintrag in der Tabelle vorhanden ist.Einfügen nach Abschneiden Start von 1; aber Einfügen nach dem Löschen wird vom vorherigen Wert fortgesetzt

Beispiel: (1) Original Tabelle enter image description here

(2) alle Zeilen löschen, und dann Einfügen enter image description here

(3) Abschneiden der Tisch dann enter image description here

+0

FYI ...... wenn Sie seine Reset gestutzt, die Identität, während im Fall des Löschvorganges seines Anfang von den letzten Wert von id + 1 –

+0

i oberen erwähnt habe, dass die andere Hauptunterschied zwischen löschen und gestutzt –

+0

Dies ist erwartetes Verhalten siehe https://dev.mysql.com/doc/refman/5.7/en/delete.html unter der Überschrift Auto-Increment-Spalten. Wenn Sie nach dem Löschen alles zurücksetzen müssen, verwenden Sie alter table oder drop und create table. –

Antwort

1

Der Strom max einfügen Wert für die Autoinkrement-Funktion wird in der Tabellendefinition gespeichert (Sie können es sehen, wenn Sie show create table idle ausführen. Wenn Sie alle Zeilen aus t löschen In der Tabelle bleibt der Autoincrement-Wert gleich. Wenn Sie die Tabelle abschneiden, löschen Sie die Tabelle und erstellen sie neu. Dadurch wird der Autoincrement-Wert auf 0 zurückgesetzt.

Hoffe, das hilft.

+0

und was, wenn ich von 1 nach dem Löschen beginnen muss, gibt es eine Möglichkeit? – WeAreRight

+0

@JoneDotosvky gibt es eine 'id> 0'? – MohaMad

+1

Wie MohaMad darauf hinwies: 'ALTER TABLE Tabellenname AUTO_INCREMENT = 1;' sollte den Startwert auf 1 setzen. –

1

Ich glaube, Sie sind über Autoinkrement, führen Sie diese Abfrage nach delete Abfrage zurück:

ALTER TABLE tablename AUTO_INCREMENT = 1 ; 

HINWEIS: Seien Sie vorsichtig über doppelte Schlüssel, wenn Sie einige IDs löschen und ids auf 1 zurückgesetzt, während id = 2 oder n existiert!

Beachten Sie, dass Sie den Zähler nicht auf einen Wert zurücksetzen können, der kleiner oder gleich dem Wert ist, der bereits verwendet wurde. Wenn der Wert für MyISAM kleiner oder gleich dem Maximalwert ist, der sich derzeit in der Spalte AUTO_INCREMENT befindet, wird der Wert auf das aktuelle Maximum plus eins zurückgesetzt. Bei InnoDB tritt kein Fehler auf und der aktuelle Sequenzwert wird nicht geändert, wenn der Wert kleiner als der aktuelle Maximalwert in der Spalte ist.

einige andere Aktionen und Notizen in this topic

0

erwähnten Sie AUTO INCREMENT in id geben, warum es ist, wie this.whenever verhalten Sie seine gestutzt die Identität zurückgesetzt, während im Fall des Löschvorganges seines Anfang von den letzten Wert Ihre ID. Wenn dieses Verhalten nicht gewünscht wird, entfernen Sie AUTO INCREMENT Index von id Feld.

Verwandte Themen