2013-01-31 75 views
1

我有一個cron作業,在postgres中執行plpgsql函數。該函數將零到多個記錄插入到表中。返回由函數創建的記錄作爲結果的最好方法是什麼?返回由plpgsql函數插入的記錄

我使用的是PostgreSQL 9.1

回答

3

幸運的是,可以很容易地完成。說,你是插入到表insert_tbl ...

CREATE OR REPLACE FUNCTION f_ins_return() 
    RETURNS SETOF insert_tbl AS 
$func$ 
BEGIN 

RETURN QUERY 
INSERT INTO insert_tbl 
SELECT * FROM othertable LIMIT 3 -- or where ever your rows come from ... 
RETURNING *; 

END 
$func$ LANGUAGE plpgsql; 

電話:

SELECT * FROM f_ins_return(); 

關鍵要素:

RETURNS SETOF insert_tbl
RETURN QUERY
RETURNING *

+0

完美!謝謝歐文! –

0

您可以創建一個列,在其中放置一個值。該值是一小部分限制值之一。在這種情況下,這些值是記錄創建方式的來源。一個值是cron job,另一個值是人工插入或其他方式在該表中創建記錄。之後,您可以通過使用SQL的方式找出創建哪條記錄。