回答

收藏

插入单个查询中的两个表PostgreSQL

技术问答 技术问答 301 人阅读 | 0 人回复 | 2023-09-14

我有这三张表。
! D) n  K, P* }3 u8 _EmployeePK : idnamecompletedByFK : employee_idFK : order_idOrderPK : iddate我创建了创建订单的表格,包括填写订单(日期)的信息和完成订单的人。在我的表格中,有一个表格可以让我选择员工并获得他们ID。我想知道是否可以通过查询来查询表格Order和completelyBy插入表中。
: e6 w* g: m; ]6 e答案中使用两个插入内容或代码的有效性有什么区别吗?8 b9 H8 r( [$ A  a
                                                                8 F* ^6 ]! a1 h8 _9 B; Q
    解决方案:                                                                ' s+ a* R3 ~3 p% t! E
                                                                这可以通过修改公共表达式数据来完成:" q6 }2 @: x. u
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。然后,第二部分completedby使用已知的employee_id将行插入表并从上一步检索order_id。
9 g" ^" M2 B) b( ?2 S编辑        
/ v& @5 L3 ^1 n& n  ?- U如果id在列orders表是一个serial列,如果你想生成序列,你可以做到这一点和价值:& _2 j; O7 M6 r4 L# P: @$ l
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));
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则