maettig.com

Thiemos Archiv

Für fortlaufende Primärschlüssel kennt MySQL AUTO_INCREMENT als "column constraint" (Nebenbedingung). PostgreSQL kennt SERIAL als Datentyp. Der SQL-Standard sieht CREATE SEQUENCE sequencename und DEFAULT NEXVAL(sequencename) vor, wiederum als "column constraint". Und SQLite? Das tanzt völlig aus der Reihe. Wenn eine Spalte als INTEGER PRIMARY KEY definiert wurde und sie beim INSERT keinen Wert zugewiesen bekommt, wird sie hochgezählt.

Allerdings nicht basierend auf einer Sequenz wie bei allen anderen genannten Varianten (auch MySQL hält intern eine Sequenz), sondern basierend auf dem momentan höchsten Wert der Spalte. Der Unterschied wird deutlich, wenn man eine Zeile einfügt und sofort wieder löscht. Die dafür vergebene Nummer ist nirgends notiert und wird beim nächsten INSERT noch einmal vergeben.

Zum Spielen ist SQLite trotzdem super.

(Außerdem macht das meine CSV-Datenbankklasse genauso.)

Kommentare zu diesem Beitrag können per E-Mail an den Autor gesandt werden.

[ ← Zurück zur Übersicht ]

Impressum & Datenschutz