[英]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.