PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

beschreibbarer gemeinsamer Tabellenausdruck und mehrere Einfügeanweisungen

Sie können CTEs verwenden, wenn Sie dies alles in einer Anweisung möchten:

with foo as (
      select * from ...
     ),
     b as (
      insert into bar
          select * from foo
          returning *
     )
insert into baz
    select * from foo;

Hinweise:

  • Sie sollten Spaltenlisten mit insert einfügen .
  • Sie sollten die Spaltennamen explizit angeben für den select * . Dies ist wichtig, da die Spalten in den beiden Tabellen möglicherweise nicht übereinstimmen.
  • Ich benutze immer returning mit update /insert /delete in CTEs. Dies ist der normale Anwendungsfall – so können Sie beispielsweise Seriennummern von einer Beilage zurückerhalten.