Seite 1 von 1
SQLITE3 und "INTEGER PRIMARY KEY"
Verfasst: Freitag 4. April 2008, 14:14
von sprudel
Hallo,
ich habe eine Datenbank in sqlite3 und dort ein Feld id vom Typ "INTEGER PRIMARY KEY".
Wenn ich jetzt einen Eintrag in die Datenbank mache, füge ich im INSERT-Query das Feld id nicht ein - es wird automatisch eine hochzählende ID verwendet.
Soweit so gut ...
Gibt es eine direkte Möglichkeit nach dem Query herauszufinden, welche id genau für diesen INSERT Befehl verwendet wurde?
Das id Feld ist in diesem Fall quasi eine Art eindeutige Transaktionsnummer. Und ich möchte diese zurückerhalten.
Hoffe ihr kennt eine Lösung.
Chris
Verfasst: Freitag 4. April 2008, 14:33
von Jan-Peer
Prinzipiell sollte es ein "Select max(id) from table" tun.
Verfasst: Freitag 4. April 2008, 14:35
von Hyperion
Jan-Peer hat geschrieben:Prinzipiell sollte es ein "Select max(id) from table" tun.
Das ist aber insofern prinzipiell, weil ja nicht klar ist, ob die neue ID größer ist als die bis dato größte! Wenn die Implementierung erst Lücken füllt, bekommt man da Probleme. Bei MySQL gabs dazu die last_insert_id()-Funktion iirc. Such doch mal bei SQLite, ob es da was ähnliches gibt!
Verfasst: Freitag 4. April 2008, 14:36
von Masaru
... nur dann, wenn er garantieren kann, dass keine andere Verbindungen zuvor ebenfalls einen Insert in genau diese Tabelle gehauen haben.
Re: SQLITE3 und "INTEGER PRIMARY KEY"
Verfasst: Freitag 4. April 2008, 14:48
von gerold
sprudel hat geschrieben:Gibt es eine direkte Möglichkeit nach dem Query herauszufinden, welche id genau für diesen INSERT Befehl verwendet wurde?
Hallo Chris!
Vielleicht steht etwas in ``cursor.lastrowid``.
mfg
Gerold

Re: SQLITE3 und "INTEGER PRIMARY KEY"
Verfasst: Freitag 4. April 2008, 15:00
von sprudel
gerold hat geschrieben:sprudel hat geschrieben:Gibt es eine direkte Möglichkeit nach dem Query herauszufinden, welche id genau für diesen INSERT Befehl verwendet wurde?
Hallo Chris!
Vielleicht steht etwas in ``cursor.lastrowid``.
mfg
Gerold

Hallo gerold.
Vielen Dank, das hat perfekt funktioniert

Dankeschön
Verfasst: Freitag 4. April 2008, 15:31
von Hyperion
Masaru hat geschrieben:... nur dann, wenn er garantieren kann, dass keine andere Verbindungen zuvor ebenfalls einen Insert in genau diese Tabelle gehauen haben.
Dafür gibt es ja Zugriffssperren

Verfasst: Freitag 4. April 2008, 15:37
von Masaru
*g* SQlite3 unterstützt "locks"?
Verfasst: Freitag 4. April 2008, 15:50
von Hyperion
hehe ... vermutlich nicht
