Du kan bruge CTE'er, hvis du vil have det hele i én erklæring:
with foo as (
select * from ...
),
b as (
insert into bar
select * from foo
returning *
)
insert into baz
select * from foo;
Bemærkninger:
- Du bør inkludere kolonnelister med
insert
. - Du bør angive kolonnenavnene eksplicit for
select *
. Dette er vigtigt, fordi kolonnerne muligvis ikke stemmer overens i de to tabeller. - Jeg bruger altid
returning
medupdate
/insert
/delete
i CTE'er. Dette er det normale tilfælde -- så du kan f.eks. få serielle id'er tilbage fra en indsats.