Insert - soll die neue ID liefern - wie ?

joobi

Benutzer
Beiträge
24
Wenn ich mit Insert einen neuen Datensatz anlege, würde ich gerne über die neue ID des Datensatzes auf diesen zugreifen.

Dazu müsste ich die beim INSERT vergebenen ID im Datensatz bekommen.

Wie macht man das ?
 
Werbung:
last_insert_id() oder sowas verwenden, oder PostgreSQL:

Code:
test=*# create table demo(id serial primary key, val text);
CREATE TABLE
test=*# insert into demo(val) values ('test') returning id;
 id
----
  1
(1 row)

INSERT 0 1
test=*# insert into demo(val) values ('test') returning id;
 id
----
  2
(1 row)

INSERT 0 1


oder auch sowas nettes geht da:

Code:
test=*# create table demo2(demo_id int references demo, val text);
CREATE TABLE
test=*# with id as (insert into demo (val) values ('neuer test') returning id) insert into demo2 select id, 'das geht in demo2' from id;
INSERT 0 1
test=*# select * from demo;
 id |    val     
----+------------
  1 | test
  2 | test
  3 | neuer test
(3 rows)


test=*# select * from demo2;
 demo_id |        val       
---------+-------------------
       3 | das geht in demo2
(1 row)

test=*#

Du kannst also mit einem einzelnen Befehl gleichzeitig in demo was einfügen, die generierte ID erhalten und diese id wieder als Wert in eine andere Tabelle einfügen. Das ist beliebig ausbaufähig.
 
Zurück
Oben