我正在寻找一种在PostgreSQL中返回受DELETE子句影响的行数的方法。文档指出;
成功完成后,DELETE命令返回窗体的命令标记。 删除计数 计数是已删除的行数。如果计数为0,则没有符合条件的行(这不被视为错误)。 如果DELETE命令包含返回子句,则结果与SELECT语句的结果类似,SELECT语句包含返回列表中定义的列和值,这些列和值由命令删除的行计算。
但我很难找到一个很好的例子。有人能帮我吗?我怎么知道有多少行被删除了?
编辑:--我想介绍一种我后来发现的替代方案。它可以在这里中找到,在38.5.5下解释。获取结果状态标题。
发布于 2014-03-20 23:04:26
您可以使用RETURNING
子句:
DELETE FROM table WHERE condition IS TRUE RETURNING *;
之后,您只需检查返回的行数。您可以使用CTE简化它
WITH deleted AS (DELETE FROM table WHERE condition IS TRUE RETURNING *) SELECT count(*) FROM deleted;
这应该只返回已删除的行数。
发布于 2017-02-08 02:37:40
GET诊断信息用于显示已修改/删除的记录的数量。
样本代码
CREATE OR REPLACE FUNCTION fnName()
RETURNS void AS
$BODY$
declare
count numeric;
begin
count := 0;
LOOP
-- condition here update or delete;
GET DIAGNOSTICS count = ROW_COUNT;
raise notice 'Value: %', count;
end loop;
end;
$BODY$a
发布于 2010-02-13 01:21:36
这在Java中应该很简单。
Statement stmt = connection.createStatement();
int rowsAffected = stmt.executeUpdate("delete from your_table");
System.out.println("deleted: " + rowsAffected);
见java.sql.Statement。
https://stackoverflow.com/questions/2251567
复制相似问题