PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

expression de table commune inscriptible et instructions d'insertion multiples

Vous pouvez utiliser les CTE, si vous voulez tout cela dans une seule déclaration :

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

Remarques :

  • Vous devez inclure des listes de colonnes avec insert .
  • Vous devez spécifier les noms de colonne explicitement pour le select * . Ceci est important car les colonnes peuvent ne pas correspondre dans les deux tableaux.
  • J'utilise toujours returning avec update /insert /delete dans les CTE. C'est le cas d'utilisation normal -- vous pouvez donc récupérer les identifiants de série à partir d'une insertion, par exemple.