22 Stimmen

SQLite: AUTOINCREMENT-Feld zurücksetzen

Frage von Gast | Letztes Update am 13.05.2021 | Erstellt am 06.04.2017

In meiner SQLite-Datenbank habe ich eine ID-Spalte, deren Integer-Wert mit Hilfe von AUTOINCREMENT automatisch hoch gezählt wird, sobald ein neuer Eintrag in die Tabelle kommt.

Das funktioniert wunderbar, jedoch lösche ich die Tabelle häufig und sobald ich dann in die leere Tabelle neue Daten schreibe, fängt die Zählung nicht neu an sondern bei dem letzten Wert, den die Spalte vorher hatte.

Kann man diesen AUTOINCREMENT-Wert irgendwie zurücksetzen, dass er wieder von neuem bei 0 beziehungsweise 1 anfängt?

AntwortenPositivNegativ
3Beste Antwort3 Stimmen

SQLite speichert die letzte ROWID in der Tabelle SQLITE_SEQUENCE, die von SQLite automatisch verwaltet wird. Der Wert darin bleibt selbst dann erhalten, wenn du deine komplette Tabelle leerst.

Du müsstest also sowohl deine Tabelle leeren, als auch die Daten über deine Tabelle in der SQLITE_SEQUENCE Meta-Tabelle. Zum Beispiel so:

DELETE FROM tab;
DELETE FROM sqlite_sequence WHERE name = 'tab';

Nehmen wir an, dass deine Tabelle, die du löschen möchtest, "tab" heißt. Die erste Zeile würde alle Daten aus deiner Tabelle leeren, die zweite Zeile die Einträge der SQLITE_SEQUENCE. Wenn du nun einen neuen Eintrag zu deiner Tabelle hinzufügt, beginnt die Zählung wieder von vorne.

UPDATE sqlite_sequence SET seq = 10 WHERE name = 'tab';

Alternativ kannst du natürlich auch individuell die Werte von SQLITE_SEQUENCE ändern. Die Query hier würde beispielsweise die Zählung bei 10 beginnen lassen.
07.04.2017 um 12:37

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.