これをすべて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を取得できます。