postgresql - DELETE 查询返回已删除记录的计数
问题描述
使用 postgres 9.6。
我正在尝试编写一个函数,该函数将删除记录并将已删除的行数返回给应用程序开发人员。我有一些以下演示,但我一直遇到语法问题。
BEGIN;
DELETE FROM it.animals WHERE id <5
RETURNING COUNT(id);
ROLLBACK;
[2020-03-12 09:14:11] [42803] 错误:返回中不允许聚合函数
解决方案
您需要使用公用表表达式:
with deleted as (
DELETE FROM it.animals WHERE id <5
returning id
)
select count(*)
from deleted;
但是,如果这是 PL/pgSQL 函数的一部分,您可以使用GET DIAGNOSTICS
:
$$
declare
l_num_rows integer;
begin
DELETE FROM it.animals WHERE id <5
GET DIAGNOSTICS l_num_rows = ROW_COUNT;
return l_num_rows;
end;
$$
推荐阅读
- spring - Spring Boot:配置继承
- python - 我如何告诉熊猫在多年中对相同的月份进行分组?
- r - R中具有大稀疏张量的算术/逻辑运算
- c++ - 如何从一个在循环内使用迭代器的函数内部使用 getter 的类中检索特定成员?
- react-native - 如何从 Expo / React Native 将图像分享到 Instagram 故事
- r - 满足条件后退出 Plumber API
- python-3.x - 我们可以一次在单个 lambda 函数中使用 for 循环和 if else 吗?因此它可以在循环内工作时检查值
- python - 并行比较两个拆分的数据列表
- bash - 运行命令以通过 bash 创建目录
- python - ElementClickInterceptedException:元素点击被拦截: