Questo può essere fatto usando un'espressione di tabella comune per la modifica dei dati:
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)
);
La prima parte si inserisce negli orders
tabella e restituisce l'ID inserito. La seconda parte poi inserisce la riga nel completedby
tabella utilizzando l'ID_impiegato noto e recuperando l'id_ordine dal passaggio precedente.
Modifica
se l'id
nella colonna orders
table è un serial
colonna e vuoi lasciare che la sequenza generi il valore puoi farlo anche tu:
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)
);