Datenbanktabellen haben eindeutigen Identifikationsnummern , die so genannte primäre Schlüssel für jede einzelne Zeile . MySQL Autoinkrement vergibt automatisch eine neue Nummer zu einem ganzzahligen Spalte als Primärschlüssel , das spart Ihnen die Zeit benötigt, um Ihre eigenen Primärschlüssel und Tracking-Code erstellt werden soll . Wenn Sie Zeilen löschen, allerdings fällt die Sequenz von Auto-Inkrement -Werte nicht mehr synchron mit dem Rest der Spalte Werte . Auto-Increment Funktion
Die Auto-Inkrement- Funktion arbeitet , indem sie eine Aufzeichnung der Reihe Identifikationsnummern auf den Tisch selber. Wenn Sie eine bestimmte Spalte zu Autoinkrement bezeichnen , wenn Sie eine Zeile in der Tabelle hinzufügen , MySQL- ISAM -Engine automatisch füllt diese Spalte mit einem numerischen Wert, der um eins größer ist als der Wert , der die letzte Zeile, die Sie hinzugefügt identifiziert ist . Die Funktion ist nicht auf die Daten in Ihre Reihen selbst verlassen, sondern seinen eigenen Rekord des letzten Wertes an eine Zeile zugeordnet.
Getting Out of Sync
Sie löschen von Zeilen aus Ihrer Tabelle , löschen Sie einzelne Komponenten in der Folge von Zahlen die ISAM-Modul zugeordnet , um Ihren Reihen . Wenn Sie Ihren vierten Zeile zu löschen , zum Beispiel, dann MySQL nicht zurück und weisen numerische Werte auf den Bereich , der automatisch inkrementiert wird , um die Zahlenfolge zu halten. Und falls MySQL gab die letzte Zeile, die Sie fügte eine indentification Zahl von 20 und sie löschen , die ISAM -Engine noch vergibt die nächste Zeile fügen Sie den Wert von 21 Jahren.
Auto-Increment Antwort
da der Zweck der Auto-Inkrement ist , jede Zeile in Ihren MySQL-Tabelle eine eindeutige Kennung zu stellen, ist es egal, wenn die Zahlen weist er als Identifikation Löcher in der Folge haben oder nicht. Es kommt nur darauf an , dass keine zwei Zeilen die gleiche ID -Nummer haben . Programm -Designs , die auf einer ununterbrochenen Folge von Zahlen verlassen zum Navigieren der Datenbank-Tabelle sind unzuverlässig , da fiel Datenbankzeilen kann sie Fehlfunktion. Lädt die Zeilen Daten in ein Array -ähnliches Objekt und mit Element Indices ist ein stabiler Ansatz .
Lösung
Um Ihre Auto - Increment-Spalte in perfekter Abfolge halten , Löcher reparieren , nachdem Sie Zeilen fallen vom Tisch . Wenn Sie die gesamte Spalte fallen , MySQL auch verwirft seinen eigenen Rekord von der nächsten Nummer es für die nächste Zeile weisen Sie diese Tabelle verwenden. Wenn Sie die Spalte neu mit dem gleichen Auto-Inkrement- Syntax MySQL automatisch füllt die Säule mit einer geordneten Folge von Zahlen für jede Zeile, die Sie derzeit in der Datenbank . Um jedoch eine perfekte Sequenz zu erhalten, müssen Sie diesen Schritt wiederholen, jedes Mal, wenn Sie Drop eine Zeile aus Ihrem Tisch.