Hi,
bin mir nicht sicher, obs hier rein passt, aber in anderen Foren wohl noch weniger.
Folgendes Problem. Ich habe eine Tabelle in einer DB (PostgreSQL), davon eine Spalte als SERIAL definiert, also ein autoinkrement. Mein Problem ist nun, wenn ich in diese Tabelle einen Eintrag mache, wie bekomme ich heraus, welcher Wert für die SERIAL Spalte vergeben wurde? Was ist dafür die sinnvollste Herangehensweise. Es geht mir nicht darum, dass es funktioniert, es sollte vor allem sauber funktionieren.
SQL: Vom System vergebenen autoincrement Wert erfragen
Servus,
das sollte eigentlich mit der Funktion currval klappen:
Beim Belegen einer Spalte mit 'serial' wird eine Sequenz angelegt, das sieht man, wenn man in psql mal
aufruft.
Da steht dann ein Eintrag mit _seq am Schluss.
Wenn du jetzt einen insert in diese Tabelle machst und anschließend ein
sollte der Wert angezeigt werden.
So, das ganze ohne Gewähr, ich kanns grad nicht ausprobieren
Gruß
Harre
das sollte eigentlich mit der Funktion currval klappen:
Beim Belegen einer Spalte mit 'serial' wird eine Sequenz angelegt, das sieht man, wenn man in psql mal
Code: Alles auswählen
\d tabelle
aufruft.
Da steht dann ein Eintrag mit _seq am Schluss.
Wenn du jetzt einen insert in diese Tabelle machst und anschließend ein
Code: Alles auswählen
select currval ('der_name_dieser_Sequenz')
So, das ganze ohne Gewähr, ich kanns grad nicht ausprobieren
Gruß
Harre
Deswegen hab ich das "sauber" erwähnt Das ist mehr so auf gut Glück. Schließlich könnte die Tabelle ja zwischenzeitilch einen weiteren Eintrag bekommen haben. Ich würde hier ganz gerne auf Transaktionen verzichten, um so was sicherzustellen und frage mich halt, ob man das auch auf geschicktere Art hinbekommt. Eben nicht "ich trage was ein und gucke dann, was gerade der höchste Wert ist"harre hat geschrieben:das sollte eigentlich mit der Funktion currval klappen
Stimmt Das ist mir offenbar entgangen. Damit ist es natürlihc genau das was ich suche. Jetzt stellt sich die Frage was als Sitzung gilt, weil ich das ganze aus einem Programm heraus mache. Ich vermute mal, dass eine Sitzung dann so lange dauert, bis die Verbindung geschlossen wird. Aber das kann ich ja heraus finden. Danke dir