Postgres 插入 select 和值

Postgres insert with select and values

所以我试图将一个值插入辅助 table,从插入中获取 returned id,并在准备好的语句中将它与一些值一起使用第一个语句 (table2) 的 writing.The return 是第一个 table 中外键列的 ID。 我想在 end.Something 中获取 table 1 的 ID,例如:

WITH table2ID AS
(
INSERT INTO table2 (value) VALUES ('somevalue') RETURNING id;
)
INSERT INTO table1(table2returnvalue,othervalue) VALUES
(table2ID 'val2') RETURNING id

我可以看到我可能也需要一个事务,因为如果 table1 的语句由于某种原因失败,我不想在 table2 中隔离。

你能帮忙吗?

我想你正在寻找这样的东西:

WITH table2ID AS
(
  INSERT INTO table2 (value) VALUES ('somevalue') RETURNING id;
)
INSERT INTO table1(table2returnvalue,othervalue) 
SELECT table2ID.id, 'val2' FROM table2ID;

要使用 CTE 执行此操作通常最简单 return 整行(从 table2 输出)并在您的第二个插入查询中引用它。

WITH table2 AS
(
    INSERT INTO table2 ( value )
    VALUES ( 'somevalue' )
    RETURNING table2.*;
)
INSERT INTO table1 ( table2returnvalue, othervalue )
SELECT table2.id, 'val2'
FROM table2
RETURNING table1.id