Dit kan worden gedaan met behulp van een gemeenschappelijke tabeluitdrukking die gegevens wijzigt:
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)
);
Het eerste deel wordt ingevoegd in de orders tabel en retourneert de ID die is ingevoegd. Het tweede deel voegt dan de rij in de completedby tabel met behulp van de bekende employee_id en het ophalen van de order_id uit de vorige stap.
Bewerken
als de id kolom in de orders tabel is een serial kolom en u wilt dat de reeks de waarde genereert, kunt u dat ook doen:
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)
);