1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Insert - soll die neue ID liefern - wie ?

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von joobi, 22 September 2018.

  1. joobi

    joobi Neuer Benutzer

    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 ?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden