【发布时间】:2017-10-31 15:17:01
【问题描述】:
大家好,我创建了这个触发器函数来计算受更新影响的行数。
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();
我想做的是使用GET DIAGNOSTICS将test的更新行数存储在smt中,但是当我读取smt表的内容时,保留用于存储row_count的字段甚至为0更新后。
如果您有任何想法,请告诉我。
诚挚的。
【问题讨论】:
-
与编辑前的Count number of updates 非常相似。
-
为什么不
select n_tup_upd from pg_stat_all_tables where relname = 'test'?.. 你为什么要这样做?.. 只是在更新时获得诊断 - 为什么超过触发,在其他地方保存价值,然后选择它...... -
@Vao Tsun 谢谢你的回答。
标签: sql postgresql plpgsql database-trigger