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
所以我试图将一个值插入辅助 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