use*_*332 5 sql database postgresql
我有这3张桌子.
Employee
PK : id
name
completedBy
FK : employee_id
FK : order_id
Order
PK : id
date
Run Code Online (Sandbox Code Playgroud)
我创建了用于创建订单的表单,其中我填写订单的信息(日期)和完成订单的人.在我的表格中有一张桌子,我从中选择员工并获得他的身份证.我想知道是否有可能使用单个查询插入表Order和completedBy.
使用两个插件或使用答案中的代码有效性有何不同?
a_h*_*ame 12
这可以使用修改公用表表达式的数据来完成:
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)
);
Run Code Online (Sandbox Code Playgroud)
第一部分插入orders
表中并返回插入的ID.然后,第二部分completedby
使用已知的employee_id 将行插入表中,并从上一步中检索order_id.
编辑
如果id
在列orders
表是一个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)
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8381 次 |
最近记录: |