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