所以我试图将一个值插入到一个辅助表中,从插入中获取返回的id,并将它与一些准备好的语句中的一些值一起使用我写的。返回第一个statement(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中出现孤立。
你能帮忙吗?
答案 0 :(得分:2)
要使用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
答案 1 :(得分:1)
我认为你正在寻找这样的东西:
WITH table2ID AS
(
INSERT INTO table2 (value) VALUES ('somevalue') RETURNING id;
)
INSERT INTO table1(table2returnvalue,othervalue)
SELECT table2ID.id, 'val2' FROM table2ID;