您好每一个我创建此触发器函数来计算受更新影响的行数。
create table smt (
id serial primary key,
num int
)
CREATE OR REPLACE FUNCTION count_updated()
RETURNS trigger
LANGUAGE 'plpgsql'
AS $BODY$
DECLARE
n int;
BEGIN
IF(TG_OP = 'UPDATE') THEN
get diagnostics n = row_count;
insert into smt (num) values (n);
return null;
END IF;
END;
$BODY$;
CREATE TRIGGER count_updt
AFTER UPDATE ON test
FOR EACH ROW EXECUTE PROCEDURE count_updated();
我想要做的是使用test
在smt
中存储GET DIAGNOSTICS
的更新行数,但是当我读取smt表的内容时,保留的字段是即使更新后,stock_count也为0。
如果你对我有任何想法。
亲切。
答案 0 :(得分:1)
只获得更新量(并且可能在某些陈述之前和之后进行比较,你可以
select n_tup_upd from pg_stat_all_tables where relname = 'test'
否则,您可以直接使用GET DIAGNOSTICS
更新(对于plpgsql)和update ... returning
与CTE和count(1)
用于sql。使用触发器,节省金额到表并选择它看起来确实是开销