ID nach insert zurück bekommen (postgresql)
dackmo
- php
Hallo,
wenn ich in eine Tabelle z.B.
CREATE TABLE data ( ID serial NOT NULL, NAME varchar(25) );
einen neuen Datensatz inserte (also nur einen neuen Namen inserte) und ich die generierte ID bekommen möchte, wie mache ich das? (mit select max(id) geht es ja nicht, da ja jemand zwischen insert und select auch einen Datensatz eingefügt und eine höhere ID bekommen haben kann). Gibts da ein Funktion, die direkt die ID des Inserts zurück gibt?
CU,
dackmo
wenn ich in eine Tabelle z.B.
CREATE TABLE data ( ID serial NOT NULL, NAME varchar(25) );
einen neuen Datensatz inserte (also nur einen neuen Namen inserte) und ich die generierte ID bekommen möchte, wie mache ich das? (mit select max(id) geht es ja nicht, da ja jemand zwischen insert und select auch einen Datensatz eingefügt und eine höhere ID bekommen haben kann). Gibts da ein Funktion, die direkt die ID des Inserts zurück gibt?
ups, übersehen! wer lesen kann ist klar im vorteil.....
Hallo dackmo,
Gibts da ein Funktion, die direkt die ID des Inserts zurück gibt?
Ja, currval(). In der Praxis sieht das so aus, dass für ein Serial-Feld automatisch eine entsprechende Sequenz erstellt wird, in deinem Beispiel würdest du die ID des zuletzt eingetragenen Datensatzes mit
currval('data_ID_seq')
bekommen.
Schöne Grüße,
Johannes