【问题标题】:Returning records inserted by plpgsql function返回由 plpgsql 函数插入的记录
【发布时间】:2013-01-31 19:18:04
【问题描述】:

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

我使用的是 PostgreSQL 9.1

【问题讨论】:

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


    【解决方案1】:

    幸运的是,这可以很容易地完成。说,你正在插入表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 *

    【讨论】:

    • 完美!谢谢你欧文!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多