保存插入的返回值.返回临时表(PostgreSQL)



我有一个表table1,其中包含列idvalue1value2

我也有一个疑问

INSERT INTO table1(value1,value2) SELECT value3,value4 FROM table2 RETURNING id

返回一组 ID。我想将返回值(这些 id)存储在某个临时表中。像这样:

INSERT INTO TEMP temp1 INSERT INTO table1(value1,value2) SELECT value3,value4 FROM table2 RETURNING id

我该怎么做?

DBMS 是 PostgreSQL

with inserted as (
  INSERT INTO table1 (value1,value2) 
  SELECT value3,value4 
  FROM table2 
  RETURNING id
) 
insert into temp
select id 
from inserted;

这需要 Postgres 9.2 或更高版本。

两个选项。

如果您只需要一个后续查询,则 with 语句(请参阅马的答案)是最简单的。

如果您需要它进行多个后续查询,另一种选择是不使用insert ... returning,而是create table as

CREATE TEMPORARY TABLE foo AS
SELECT value3,value4 FROM table2

警告:如有必要,请在表上创建所需的索引 - 如果这样做,请analyze索引。

最新更新