Wofür ist die Tabelle sqlite_sequence in einer SQLite-Datenbank?

~ 0 min
2017-10-05 12:37
  • Die Tabelle sqlite_sequence wird in SQLite meist zuletzt nach bzw. nach allen anderen Tabellen aufgelistet und beinhaltet die beiden Spalten name (Typ TEXT) und seq (Typ TEXT).
  • In dieser Tabelle steht in der seq-Spalte der größte Row-ID-Wert für die Tabelle, die in der name-Spalte davor steht.
  • Es handelt sich hier um den sog. Autoincrement-Wert.
  • Die Tabelle wird also dafür benötigt, dass, wenn in einer Tabelle der Datenbank ein neuer Datensatz eingefügt wird, die SQlite-Datenbank aus der Tabelle sqlite_sequence den zuletzt verwendeten ID-Wert auslesen kann, diesen um eins erhöht, und den neuen Datensatz mit der erhöhten ID abspeichert.
  • Der erhöhte Wert wird ebenfalls in sqlite_sequence für die entsprechende Tabelle gespeichert, damit die Datenbank später darauf wieder zurückgreifen kann.
  • Mit Hilfe dieser Tabelle werden z.B. auch Dubletten bei Primärschlüsseln vermieden.
  • Wichtig: Sie sollten in dieser Tabelle keinerlei Veränderungen vornehmen, um falsche Werte bei den IDs zu verhindern.
  • Beispiel:

Eintrag in der Tabelle sqlite_sequence:

name = TestTabelle, seq = 91

Insert: Neuer Datensatz wird in die Tabelle TestTabelle eingefügt (SQLite liest den Wert aus, erhöht um eins, also auf 92, und fügt den neuen Datensatz mit dieser ID ein).

Nach dem Einfügen des neuen Datensatzes wird der neue Wert 92 in der sqlite_sequence-Tabelle abgespeichert, so dass in dieser danach steht:

name = TestTabelle, seq = 92

 

Durchschnittliche Bewertung 0 (0 Abstimmungen)

Kommentieren nicht möglich