Można to zrobić za pomocą wspólnego wyrażenia tabelowego modyfikującego dane:
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)
);
Pierwsza część wstawia się do orders
tabeli i zwraca wprowadzony identyfikator. Druga część następnie wstawia wiersz do completedby
tabeli używając znanego identyfikatora pracownika i pobierając identyfikator zamówienia z poprzedniego kroku.
Edytuj
jeśli id
kolumna w orders
tabela jest serial
kolumna i chcesz, aby sekwencja wygenerowała wartość, którą możesz również zrobić:
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)
);