【问题标题】:Postgres function to delete old rows and return deleted rowsPostgres 函数删除旧行并返回已删除的行
【发布时间】:2020-07-19 02:10:22
【问题描述】:

我想写一个函数来删除表 Offers 中的旧行,然后返回删除的行。

CREATE OR REPLACE FUNCTION delOldOffers() RETURNS void AS $$
DELETE FROM "public"."Offers"
 WHERE created_at < now() - interval '7 days'

$$ LANGUAGE sql STABLE;

我编写了上述函数,但我不确定如何返回删除的行?如果有人可以提供帮助,那就太好了!

【问题讨论】:

    标签: postgresql hasura


    【解决方案1】:

    您需要声明您的函数以返回一个表(或 setof)并使用返回子句:

    CREATE OR REPLACE FUNCTION deloldoffers(p_num_days integer) 
      RETURNS setof offers 
    AS $$
      DELETE FROM Offers
      WHERE created_at < current_timestamp - make_interval(days => p_num_days)
      returning *;
    $$ LANGUAGE sql;
    

    要使用它,你需要选择“来自”它:

    select *
    from deloldoffers(10);
    

    【讨论】:

    • 非常感谢您的帮助!我可以为更新做一些类似的事情来取回更新的行 - CREATE OR REPLACE FUNCTION updateOldoffers(p_num_days integer) RETURNS setof offer AS $$ UPDATE "public"."Offers" SET active = 'false' WHERE created_at p_num_days) 返回 *; $$ 语言 sql;
    猜你喜欢
    • 2017-02-25
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2021-09-27
    相关资源
    最近更新 更多