gpt4 book ai didi

postgresql - 包含受先前 DELETE 影响的行数的变量? (在函数中)

转载 作者:行者123 更新时间:2023-11-29 11:09:59 25 4
gpt4 key购买 nike

我有一个用作 INSERT 触发器的函数。此函数删除与插入行的 [序列号] 冲突的行。它工作得很好,所以我真的不想争论这个概念的优点。

DECLARE
re1 feeds_item.shareurl%TYPE;
BEGIN
SELECT regexp_replace(NEW.shareurl, '/[^/]+(-[0-9]+\.html)$','/[^/]+\\1') INTO re1;
RAISE NOTICE 'DELETEing rows from feeds_item where shareurl ~ ''%''', re1;

DELETE FROM feeds_item where shareurl ~ re1;
RETURN NEW;
END;

我想在通知中添加一个指示,说明有多少行受到影响(又名:已删除)。我该怎么做(使用 LANGUAGE 'plpgsql')?

更新:基于“厨房里的鸡”的一些优秀指导,我将其更改为:

DECLARE
re1 feeds_item.shareurl%TYPE;
num_rows int;
BEGIN
SELECT regexp_replace(NEW.shareurl, '/[^/]+(-[0-9]+\.html)$','/[^/]+\\1') INTO re1;

DELETE FROM feeds_item where shareurl ~ re1;
IF FOUND THEN
GET DIAGNOSTICS num_rows = ROW_COUNT;
RAISE NOTICE 'DELETEd % row(s) from feeds_item where shareurl ~ ''%''', num_rows, re1;
END IF;
RETURN NEW;
END;

最佳答案

对于一个非常健壮的解决方案,它是 PostgreSQL SQL 的一部分而不仅仅是 plpgsql,您还可以执行以下操作:

with a as (DELETE FROM feeds_item WHERE shareurl ~ re1 returning 1)
select count(*) from a;

您实际上可以获得更多信息,例如:

with a as (delete from sales returning amount)
select sum(amount) from a;

要查看总数,通过这种方式您可以获得任何聚合甚至分组并对其进行过滤。

关于postgresql - 包含受先前 DELETE 影响的行数的变量? (在函数中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3115917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com