Това може да се направи с помощта на модифициращ данни израз на обща таблица:
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)
);
Първата част се вмъква в orders
таблица и връща идентификатора, който е бил вмъкнат. След това втората част вмъква реда в completedby
таблица с помощта на известния Emploee_ID и извличане на order_id от предишната стъпка.
Редактиране
ако id
колона в orders
таблицата е serial
колона и искате да оставите последователността да генерира стойността, можете да направите и това:
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)
);