[英]Save return values from INSERT…RETURNING into temp table (PostgreSQL)
I have a table table1
with columns id
, value1
and value2
. 我有一个表table1
,列id
, value1
和value2
。
Also I have a query 我也有一个问题
INSERT INTO table1(value1,value2) SELECT value3,value4 FROM table2 RETURNING id
that returns set of ids. 返回一组id。 I want to store return values (these ids) in some temp table. 我想在一些临时表中存储返回值(这些ID)。 Something like that: 像这样的东西:
INSERT INTO TEMP temp1 INSERT INTO table1(value1,value2) SELECT value3,value4 FROM table2 RETURNING id
How can I do it? 我该怎么做?
DBMS is PostgreSQL DBMS是PostgreSQL
with inserted as (
INSERT INTO table1 (value1,value2)
SELECT value3,value4
FROM table2
RETURNING id
)
insert into temp
select id
from inserted;
This requires Postgres 9.2 or later. 这需要Postgres 9.2或更高版本。
Two options. 两种选择。
If you need it just for one follow-up query, a with statement (see the horse's answer) is the easiest. 如果您只需要一个后续查询,那么with语句(请参阅马的答案)是最简单的。
If you need it for more than one follow-up query, the other option is to not use insert ... returning
, but rather create table as
: 如果您需要多个后续查询,另一个选项是不使用insert ... returning
,而是create table as
:
CREATE TEMPORARY TABLE foo AS
SELECT value3,value4 FROM table2
Caveats: if necessary, create the indexes you need on the table -- and analyze
it if you do. 注意事项:如有必要,可以在表格上创建所需的索引 - 如果需要,可以对其analyze
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.