返回由plpgsql函数插入的记录

时间:2013-01-31 19:18:05

标签: sql postgresql plpgsql postgresql-9.1 sql-insert

我有一个在postgres中执行plpgsql函数的cron作业。此函数将零到多个记录插入表中。什么是返回函数创建的记录的最佳方法是什么?

我正在使用PostgreSQL 9.1

2 个答案:

答案 0 :(得分: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 *

答案 1 :(得分:0)

您可以创建一个放置值的列。该值是一小组限制值之一。在这种情况下,值是创建记录的方式的来源。一个值是cron作业,另一个值是人工插入或在该表中创建记录的其他方法。之后,您可以找出使用SQL时通过哪种方式创建的记录。