当PL / pgSQL中插入多行时,如何获取最后插入的ID

时间:2014-07-11 20:16:14

标签: postgresql plpgsql

我知道我可以使用返回来获取最后插入的ID,但是如果插入查询同时插入多行并且我想获取所有插入的ID会怎么样?

insert into tbl1
select * from tbl2 
returning tbl1.row_id into r_id

我需要做什么才能使r_id包含插入行的所有row_id?

1 个答案:

答案 0 :(得分:1)

您可以循环处理它们。

这样的事情:

....
declare
  idrec record;
begin

  for idrec in insert into t1 select * from t2 returning row_id
  loop
     -- use idrec.row_id somehow
  end loop;
end;

另一种选择是将它们收集到一个数组中:

declare
   ids integer[];
begin
  with inserted (row_id) as (
     insert into t1 
     select * from t2 
     returning row_id
  )
  select array_agg(row_id)
    into ids
  from inserted;

  -- use ids array somehow
end;
相关问题