postgresql - 从第一个查询中创建的行获取串行 PK 以查询另一个表
问题描述
我想在我的表配方中添加一行,并且基于在我的第一个查询中为该行创建的 PK,需要更新我的桥接表 recipe_technology。不幸的是,我无法访问我新创建的 ID,可能是因为我没有从插入语句返回任何内容。当我对 id 进行硬编码(“SELECT 1 id”)时,下面的查询会执行我希望它执行的操作,但除此之外我有点无能为力。任何线索将不胜感激!
WITH query_one AS (
INSERT INTO (a, b, c) VALUES ($1, $2, $3)
)
INSERT INTO recipe_technology(recipe_id, technology_id)
SELECT 1 id, x FROM unnest(ARRAY[1,2,3]) x`,[a,b,c]
解决方案
WITH query_one(newid) AS
(
INSERT INTO (a, b, c) VALUES ($1, $2, $3) returning id
)
INSERT INTO recipe_technology(recipe_id, technology_id)
SELECT newid, x FROM query_one, unnest(ARRAY[1,2,3]) t(x);
推荐阅读
- sql-server - DataAdd 日期部分 varchar
- jquery - 多个下拉ajax的单个onchange
- html - 样式化 HTML/CSS 以实现给定的效果
- azure - Azure 中的 EUAP 区域是什么?
- r - grep() 在数据框中具有多个列名
- java - context.getBean 抛出 NoSuchBeanDefinitionException
- node.js - 如何使用 node.js 将一些数据直接附加到文件中?
- r - 数据框中的数据可视化和多元线性回归
- python - Python 中的字符串与 \r\n 不呈现 SCADA 标记中的回车换行符
- ruby-on-rails - 如何在 Rails 中编写乐观锁定测试用例