Điều này có thể được thực hiện bằng cách sử dụng một biểu thức bảng chung sửa đổi dữ liệu:
with new_order as (
insert into orders (id, date) values (1, current_date)
returning id
)
insert into completedby (employee_id, order_id)
values
( 42 -- employee_id,
(select id from new_order)
);
Phần đầu tiên chèn vào orders
bảng và trả về ID đã được chèn. Sau đó, phần thứ hai sẽ chèn hàng vào completedby
bằng cách sử dụng worker_id đã biết và truy xuất order_id từ bước trước.
Chỉnh sửa
nếu id
trong orders
bảng là một serial
và bạn muốn để trình tự tạo ra giá trị, bạn cũng có thể làm điều đó:
with new_order as (
insert into orders (date) values (current_date)
returning id
)
insert into completedby (employee_id, order_id)
values
( 42 -- employee_id,
(select id from new_order)
);