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
conupdate
/insert
/delete
nei CTE. Questo è il normale caso d'uso, quindi puoi recuperare gli ID seriali da un inserto, per esempio.