[英]INSERT in single query into 2 tables postgresql
我有這3張桌子。
Employee
PK : id
name
completedBy
FK : employee_id
FK : order_id
Order
PK : id
date
我創建了用於創建訂單的表單,其中我填寫訂單的信息(日期)和完成訂單的人。 在我的表格中有一張桌子,我從中選擇員工並獲得他的身份證。 我想知道是否有可能使用單個查詢插入表Order和completedBy。
使用兩個插入或使用答案中的代碼之間的有效性是否有任何差異?
這可以使用修改公用表表達式的數據來完成:
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
表中並返回插入的ID。 然后,第二部分使用已知的employee_id將行插入到completedby
表中,並從上一步中檢索order_id。
編輯
如果orders
表中的id
列是一個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)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.