簡體   English   中英

在單個查詢中INSERT到2個表postgresql中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM