Możesz użyć CTE, jeśli chcesz to wszystko w jednym oświadczeniu:
with foo as (
select * from ...
),
b as (
insert into bar
select * from foo
returning *
)
insert into baz
select * from foo;
Uwagi:
- Należy dołączyć listy kolumn za pomocą
insert
. - Nazwy kolumn należy określić jasno dla
select *
. Jest to ważne, ponieważ kolumny w obu tabelach mogą się nie zgadzać. - Zawsze używam
returning
zupdate
/insert
/delete
w CTE. Jest to normalny przypadek użycia - możesz na przykład odzyskać identyfikatory seryjne z wstawki.