Bạn có thể sử dụng CTE, nếu bạn muốn tất cả trong một câu lệnh:
with foo as (
select * from ...
),
b as (
insert into bar
select * from foo
returning *
)
insert into baz
select * from foo;
Ghi chú:
- Bạn nên bao gồm danh sách cột bằng
insert
. - Bạn nên chỉ định tên cột rõ ràng cho
select *
. Điều này rất quan trọng vì các cột có thể không khớp trong hai bảng. - Tôi luôn sử dụng
returning
vớiupdate
/insert
/delete
trong CTE. Đây là trường hợp sử dụng thông thường - chẳng hạn như bạn có thể lấy lại các id nối tiếp từ một phụ trang.