postgresql函数-获取受更新查询影响的行数[重复]

Posted

技术标签:

【中文标题】postgresql函数-获取受更新查询影响的行数[重复]【英文标题】:postgresql function - get number of rows affected by update query [duplicate] 【发布时间】:2018-04-23 09:45:24 【问题描述】:

我正在编写一个执行某些更新查询的 postgresql 函数。我需要确保任何行是否受到影响并相应地返回成功/失败消息。

如果(受影响的行)?然后'更新成功'否则'更新失败'

如何通知行数??

-- Get count from UPDATE
WITH rows AS (
    UPDATE distributors
    SET dname = 'JKL Widgets'
    WHERE did <= 10
    RETURNING 1
)
SELECT count(*) FROM rows;

【问题讨论】:

postgresql.org/docs/current/static/… select number of affected rows to a variable in function 【参考方案1】:

use get diagnostics,例如:

t=# create table so17(i int);
CREATE TABLE
t=# insert into so17 values(0);
INSERT 0 1
t=# do $$
declare d int;
begin
update so17 set i = 0 where i=0;
get diagnostics d = row_count;
raise info 'updated: % rows', d;
update so17 set i = 0 where i=1;
get diagnostics d = row_count;
raise info 'updated: % rows', d;
end;
$$;
INFO:  updated: 1 rows
INFO:  updated: 0 rows
DO

【讨论】:

我正在执行更新查询,然后是选择查询。即使更新查询失败,它也总是返回行数为 1。 你应该分享代码。更新后直接获取诊断信息,否则您将获得其他行数

以上是关于postgresql函数-获取受更新查询影响的行数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

仅执行动态查询以获取受影响的行数

MySQL重复键更新+受影响的行数

如何获取受 SQL Alchemy 影响的行数?

返回受 UPDATE 语句影响的行数

受 BigQuery 查询影响的行数

如何在 WordPress 查询中获得受影响的行数?