PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

espressione di tabella comune scrivibile e più istruzioni di inserimento

Puoi usare i CTE, se vuoi tutto questo in un'unica affermazione:

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

Note:

  • Dovresti includere elenchi di colonne con insert .
  • Dovresti specificare i nomi delle colonne esplicitamente per il select * . Questo è importante perché le colonne potrebbero non corrispondere nelle due tabelle.
  • Uso sempre returning con update /insert /delete nei CTE. Questo è il normale caso d'uso, quindi puoi recuperare gli ID seriali da un inserto, per esempio.