Vous pouvez utiliser les CTE, si vous voulez tout cela dans une seule déclaration :
with foo as (
select * from ...
),
b as (
insert into bar
select * from foo
returning *
)
insert into baz
select * from foo;
Remarques :
- Vous devez inclure des listes de colonnes avec
insert. - Vous devez spécifier les noms de colonne explicitement pour le
select *. Ceci est important car les colonnes peuvent ne pas correspondre dans les deux tableaux. - J'utilise toujours
returningavecupdate/insert/deletedans les CTE. C'est le cas d'utilisation normal -- vous pouvez donc récupérer les identifiants de série à partir d'une insertion, par exemple.