我知道我可以使用返回来获取最后插入的ID,但是如果插入查询同时插入多行并且我想获取所有插入的ID会怎么样?
insert into tbl1
select * from tbl2
returning tbl1.row_id into r_id
我需要做什么才能使r_id包含插入行的所有row_id?
答案 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;