2014-07-11 66 views
1

我知道我可以使用返回獲得最後插入的ID,但多行,如果有什麼插入查詢的同時,我插入多行想要獲取所有插入的ID?如何獲得最後插入的ID時有插在PL/pgSQL的

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

我需要做些什麼才能讓r_id包含插入行的所有row_id?

+0

我不認爲這是可能的。但不知道。 – Rahul

回答

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; 
+0

感謝您的重播!陣列解決方案似乎很有前途 – user1533145