Detta kan göras med ett datamodifierande gemensamt tabelluttryck:
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)
);
Den första delen infogas i orders
tabell och returnerar det ID som infogades. Den andra delen infogar sedan raden i completedby
tabell med det kända anställda_id och hämta order_id från föregående steg.
Redigera
om id
kolumnen i orders
tabellen är en serial
kolumn och du vill låta sekvensen generera värdet kan du också göra det:
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)
);