首页 > 解决方案 > 从第一个查询中创建的行获取串行 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]

标签: postgresql

解决方案


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);

推荐阅读