gpt4 book ai didi

sql - 在单个查询中插入 2 个表 postgresql

转载 作者:太空狗 更新时间:2023-10-30 01:50:33 24 4
gpt4 key购买 nike

我有这 3 个表。

Employee
PK : id
name

completedBy
FK : employee_id
FK : order_id

Order
PK : id
date

我创建了用于创建订单的表格,我在其中填写订单信息(日期)和谁完成了订单。在我的表单中有一张表,我从中选择员工并获取他的 ID。我想知道是否可以通过一个查询将 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)
);

关于sql - 在单个查询中插入 2 个表 postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29564179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com