Heim >Datenbank >MySQL-Tutorial >Wie setze ich automatisch inkrementierende Primärschlüssel in SQLite zurück?
SQLite-Methode zum automatischen Inkrementieren des Primärschlüssels
Das Zurücksetzen automatisch inkrementierender Primärschlüsselwerte ist ein häufiges Problem bei der Arbeit mit SQLite-Datenbanken. In diesem Artikel wird dies untersucht und effektive Lösungen bereitgestellt.
Szenarien und Fragen
Der Benutzer hat versucht, Felder für die automatische Inkrementierung für mehrere Tabellen in einer SQLite-Datenbank zurückzusetzen. Wenn Sie jedoch den Befehl DELETE FROM
verwenden, um alle Daten zu löschen, wird das Feld nicht auf 0 zurückgesetzt. Im Gegensatz dazu wird bei der automatischen Inkrementierung nach dem Löschen der Daten der Wert vom letzten Wert weiter erhöht.
Ausführliche Erklärung
Dieses Problem entsteht, weil SQLite eine separate Tabelle mit dem Namen SQLITE_SEQUENCE
verwendet, um den höchsten ROWID-Wert in jeder Tabelle zu verfolgen. Wenn ein neuer Datensatz eingefügt wird, überprüft der AUTOINCREMENT-Algorithmus die Tabelle SQLITE_SEQUENCE
, um den nächsten verfügbaren Primärschlüsselwert zu ermitteln.
Durch das Löschen von Daten aus der Haupttabelle werden nur die zugehörigen Zeilen gelöscht. SQLITE_SEQUENCE
Die Tabelle bleibt unverändert, sodass der Zähler für die automatische Erhöhung von seinem letzten Wert weiter hochzählt.
Lösung
Um das Primärschlüsselfeld auf den gewünschten Wert zurückzusetzen, führen Sie die folgenden zwei Anweisungen aus:
<code class="language-sql">DELETE FROM your_table; DELETE FROM sqlite_sequence WHERE name='your_table';</code>
Die erste Anweisung löscht alle Daten in der Haupttabelle. Die zweite Anweisung löscht den Eintrag für diese Tabelle in der Tabelle SQLITE_SEQUENCE
und setzt damit den höchsten ROWID-Wert effektiv auf 0 zurück.
Andere Hinweise
SQLITE_SEQUENCE
-Tabelle sollten mit Vorsicht erfolgen. Das obige ist der detaillierte Inhalt vonWie setze ich automatisch inkrementierende Primärschlüssel in SQLite zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!