Cela peut être fait à l'aide d'une expression de table commune de modification de données :
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 première partie s'insère dans les orders
table et renvoie l'ID qui a été inséré. La deuxième partie insère ensuite la ligne dans le completedby
table en utilisant le employee_id connu et en récupérant le order_id de l'étape précédente.
Modifier
si l'id
colonne dans les orders
table est un serial
colonne et que vous souhaitez laisser la séquence générer la valeur, vous pouvez également le faire :
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)
);