用于删除旧行和 return 已删除行的 Postgres 函数
Postgres function to delete old rows and return deleted rows
我想编写一个函数来删除 table 优惠中的旧行,然后 return 删除的行。
CREATE OR REPLACE FUNCTION delOldOffers() RETURNS void AS $$
DELETE FROM "public"."Offers"
WHERE created_at < now() - interval '7 days'
$$ LANGUAGE sql STABLE;
我写了上面的函数,但我不确定如何 return 删除的行?如果有人能提供帮助那就太好了!
您需要将函数声明为 return a table(或 setof)并使用 returning 子句:
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“来自”它:
select *
from deloldoffers(10);
我想编写一个函数来删除 table 优惠中的旧行,然后 return 删除的行。
CREATE OR REPLACE FUNCTION delOldOffers() RETURNS void AS $$
DELETE FROM "public"."Offers"
WHERE created_at < now() - interval '7 days'
$$ LANGUAGE sql STABLE;
我写了上面的函数,但我不确定如何 return 删除的行?如果有人能提供帮助那就太好了!
您需要将函数声明为 return a table(或 setof)并使用 returning 子句:
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“来自”它:
select *
from deloldoffers(10);