计算更新次数

时间:2017-10-31 15:17:02

标签: sql postgresql plpgsql database-trigger

您好每一个我创建此触发器函数来计算受更新影响的行数。

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(); 

我想要做的是使用testsmt中存储GET DIAGNOSTICS的更新行数,但是当我读取smt表的内容时,保留的字段是即使更新后,stock_count也为0。 如果你对我有任何想法。 亲切。

1 个答案:

答案 0 :(得分:1)

只获得更新量(并且可能在某些陈述之前和之后进行比较,你可以

select n_tup_upd from pg_stat_all_tables where relname = 'test'

否则,您可以直接使用GET DIAGNOSTICS更新(对于plpgsql)和update ... returning与CTE和count(1)用于sql。使用触发器,节省金额到表并选择它看起来确实是开销