Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: last_insert_id (php)



Marco Behnke wrote:
> Ok, auf zu Frage drei :)
> 
> In meinem alten System (mysql) habe ich nach dem Speichern von Objekten
> mit mysql_insert_id() die zuletzt vergebene ID des auto_increment
> ausgelesen und so die ID des Objektes ermittelt.
> 
> Das Postgres ein anderes Konzept hat (Sequenzen) und ich keine Funktion
> gesehen habe, die soetwas macht, werde ich mir wohl mit einem Umweg
> behelfen müssen.
> 
> Transktionen starten
> Nächste ID aus Sequenz holen
> Objekt explizit mit ermittelter ID Speichern
> Tranaktion commiten
> ID zurückliefern

das mit der Transaktion an sich ist überflüssig da Sequences per-session
 operieren (und das macht sie auch usable - ansonsten gebs da jede Menge
race-conditions und concurrency Issues).
Zudem genügt ein Aufruf von select currval('sequence'); um den zuletzt
in der Session vergebene id zu ermitteln (zB die dein INSERT zuvor
implizit erzeugt hat).

> 
> Ich frage nur sicherheitshalber, nicht dass es da doch noch was gibt.
> Oder habe ich vielleicht eine Möglichkeit mit dem Return-Value von
> pg_query("INSERT INTO.....") etwas anzufangen?

das was du möchtest nennt sich INSERT ... RETURNING und ist leider im
Moment nicht verfügbar - mit viel Glück vielleicht in 8.2 ...


Stefan



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group