如何在PostgreSQL中使用RETURNING更新临时表中的id?

时间:2016-10-27 17:09:49

标签: sql postgresql sql-returning

我正从外部源导入文件。我已经将数据放入类似于下面的临时表中。我需要将t_person表中的person_id放到我的临时表中,以便我可以用它做更多的操作。 我有一个解决方法,通过使用临时表上的一个键也插入到t_person中,但它很麻烦,感觉还有另一种方式。

我们正在使用postgresql 9.3,此时版本更改不是一个选项。

CREATE TABLE t_person (person_id serial, first_name text, last_name text);
CREATE TEMPORARY TABLE t1 (person_id integer, first_name text, last_name text);
INSERT INTO t1 (first_name, last_name) values ('john', 'doe'), ('jane', 'doe');

WITH ins1 AS
(
   INSERT INTO t_person (first_name, last_name)
   SELECT first_name, last_name FROM t1
   RETURNING person_id
)
UPDATE t1 SET person_id=ins1.person_id FROM ins1;

上面用最终插入中的person_id更新所有行(或多或少预期)。那么有没有办法只更新t1中用于插入t_person的单行?

谢谢, 萨姆

0 个答案:

没有答案
相关问题