PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

expressão de tabela comum gravável e várias instruções de inserção


Você pode usar CTEs, se quiser tudo isso em uma instrução:
with foo as (
      select * from ...
     ),
     b as (
      insert into bar
          select * from foo
          returning *
     )
insert into baz
    select * from foo;

Notas:
  • Você deve incluir listas de colunas com insert .
  • Você deve especificar os nomes das colunas explicitamente para o select * . Isso é importante porque as colunas podem não corresponder nas duas tabelas.
  • Sempre uso returning com update /insert /delete em CTEs. Este é o caso de uso normal -- então você pode obter IDs de série de volta de uma inserção, por exemplo.