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函数-获取受更新查询影响的行数[重复]的主要内容,如果未能解决你的问题,请参考以下文章