[linux-l] SQL / PostgreSQL

Franz Timmer ftimmer at web.de
Di Sep 19 21:07:09 CEST 2006


On Tue, 2006-09-19 at 20:15 +0200, Nico Golde wrote:
> Hallo Olaf,
> 
> * Olaf Radicke <olaf_rad at gmx.de> [2006-09-19 19:57]:
> > Ich habe ein Problem...
> > Wenn ich eine Datensatz in eine Tabelle einfüge, dessen einziger eindeutiger 
> > Schüssel ein SERIAL PRIMARY KEY ist, wie bekomme ich raus, unter welcher ID 
> > der Datensatz gespeichert wurde? Nachträglich danach suchen geht nicht, weil 
> > alle anderen Spalten mehrfach vorkommen können und nicht eindeutig sind. Also 
> > brauche ich gleich beim INSERT die SERIAL PRIMARY KEY zurück. Wie bekommt man 
> > das hin??
> 
> Die id wird als ganz normale Spalte in der Tabelle 
> gespeichert und sollte mit select id erreichbar sein.
> Gruß nico


Das Problem ist, dass die Db automatisch zum Datensatzeintrag einen
automatischen Primärschlüssel hinzufügt. Dieser wird nicht an die
Endanwendung zurückgeliefert. Zumindest ist mir kein Befehl bekannt, mit
dem man dies abfragen könnte. 

Hier ein Umweg.
Wenn der Endanwender sich anmeldet, bevor er auf die DB zugreift, so
könnte man dem INSERT Befehl die userid (oder user) mitgeben und
gleichzeitig die Unix-Zeit.
Anschliessend kann über
SELECT ... WHERE userid = "" and zeit = "" der Datensatz selektiert
werden.

Es ist unwahrscheinlich, dass ein user zur gleichen Sekunde zwei
Einträge einfügt. (Zudem kann man dies Problem mit kombinierten
DB-Schlüsseln abfangen, so dass user und zeit nicht doppelt vorkommen
dürfen.) 

Aber vielleicht hat jemand eine andere (und einfachere) Idee?

Franz Timmer





Mehr Informationen über die Mailingliste linux-l