1
我知道我可以使用返回獲得最後插入的ID,但多行,如果有什麼插入查詢的同時,我插入多行想要獲取所有插入的ID?如何獲得最後插入的ID時有插在PL/pgSQL的
insert into tbl1
select * from tbl2
returning tbl1.row_id into r_id
我需要做些什麼才能讓r_id包含插入行的所有row_id?
我知道我可以使用返回獲得最後插入的ID,但多行,如果有什麼插入查詢的同時,我插入多行想要獲取所有插入的ID?如何獲得最後插入的ID時有插在PL/pgSQL的
insert into tbl1
select * from tbl2
returning tbl1.row_id into r_id
我需要做些什麼才能讓r_id包含插入行的所有row_id?
您可以循環處理它們。
事情是這樣的:
....
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;
感謝您的重播!陣列解決方案似乎很有前途 – user1533145
我不認爲這是可能的。但不知道。 – Rahul