To lze provést pomocí běžného tabulkového výrazu upravujícího data:
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)
);
První část se vkládá do orders tabulku a vrátí ID, které bylo vloženo. Druhá část pak vloží řádek do completedby pomocí známého id_zaměstnance a načtením id_objednávky z předchozího kroku.
Upravit
pokud id ve sloupci orders tabulka je serial a chcete nechat sekvenci generovat hodnotu, můžete to udělat také:
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)
);