これをすべて1つのステートメントにまとめたい場合は、CTEを使用できます。
with foo as (
select * from ...
),
b as (
insert into bar
select * from foo
returning *
)
insert into baz
select * from foo;
注:
-
insertを含む列リストを含める必要があります 。 - 列名は明示的に指定する必要があります
select *の場合 。 2つのテーブルで列が一致しない可能性があるため、これは重要です。 - 私は常に
returningを使用しますupdateを使用 /挿入コード> /削除CTEで。これは通常の使用例です。たとえば、挿入からシリアルIDを取得できます。