Můžete použít CTE, pokud to chcete všechno v jednom příkazu:
with foo as (
select * from ...
),
b as (
insert into bar
select * from foo
returning *
)
insert into baz
select * from foo;
Poznámky:
- Seznamy sloupců byste měli zahrnout pomocí
insert
. - Názvy sloupců byste měli zadat explicitně pro
select *
. To je důležité, protože sloupce ve dvou tabulkách se nemusí shodovat. - Vždy používám
returning
supdate
/insert
/delete
v CTE. Toto je normální případ použití -- takže například můžete získat sériová ID zpět z přílohy.