sql >> Base de Datos >  >> RDS >> PostgreSQL

expresión de tabla común grabable y declaraciones de inserción múltiple

Puede usar CTE, si quiere todo esto en una declaración:

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

Notas:

  • Debe incluir listas de columnas con insert .
  • Debe especificar los nombres de las columnas explícitamente para el select * . Esto es importante porque las columnas pueden no coincidir en las dos tablas.
  • Siempre uso returning con update /insert /delete en CTE. Este es el caso de uso normal, por lo que puede recuperar los identificadores de serie de una inserción, por ejemplo.