首页 > 解决方案 > PostgreSQL 创建触发器,它在每次插入或更新表时运行一个函数

问题描述

我在我的 postgres 数据库中定义了两个表scores和。analyzed_avg_score我也有一个我这样声明的功能:

CREATE FUNCTION updateAvgScore() RETURNS void AS $$
    INSERT into analyzed_avg_score
        (SELECT 
            user,
            avg(score_value)
        FROM
            scores
        group by user) on conflict do nothing;
$$ LANGUAGE SQL;

现在,我想要一个触发器或类似的东西,每次我在score. 我还没有太多的 SQL 经验。那么,有人知道触发器应该是什么样子吗?

标签: sqldatabasepostgresql

解决方案


CREATE TRIGGER SCORE_INSERT AFTER INSERT ON SCORE
FOR EACH ROW EXECUTE PROCEDURE updateAvgScore();


/*Have it return a trigger like this */

CREATE OR REPLACE FUNCTION updateAvgScore() RETURNS TRIGGER AS $example_table$
   BEGIN
      /*YOUR lOGIC HERE*/
   END;
$example_table$ LANGUAGE plpgsql;

推荐阅读