繁体   English   中英

Postgres插入select和values

[英]Postgres insert with select and values

所以我试图在一个辅助表中插入一个值,从插入中获取返回的id,并将它与我正在编写的预处理语句中的一些值一起使用。第一个语句(table2)的返回值是一个id对于第一个表中的外键列。 我想最终获得表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中隔离。

能否请你帮忙?

要使用CTE执行此操作,通常最容易返回整行(从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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM