【问题标题】:Trigger Not Executing Yet It's Created触发器尚未执行但已创建
【发布时间】:2013-03-12 14:42:23
【问题描述】:

我有一个尝试在 Postgres 中执行的触发函数。

它编译并添加了触发器,但是它并没有像我希望的那样将值插入到表中。

它使用的函数如下所示:

CREATE OR REPLACE FUNCTION
calc_gnpDifference(n integer, o integer)
RETURNS NUMERIC AS $$
        SELECT $1 ::numeric - $2::numeric AS gnpDifference;
$$ LANGUAGE SQL;

还有触发器部分:

CREATE OR REPLACE FUNCTION autoCalculate() RETURNS TRIGGER AS $$
        BEGIN

        IF NEW.gnp_old > NEW.gnp_old THEN
                NEW.gnpDifference := calc_gnpDifference(NEW.gnp_old, NEW.gnp);
        END IF;

        RETURN NEW;
        END;
$$ LANGUAGE plpgsql;

DROP TRIGGER insertDifference ON country;
CREATE TRIGGER insertDifference BEFORE INSERT ON country
FOR EACH ROW EXECUTE PROCEDURE autoCalculate();

但是,当我插入数据时,触发器并没有像我希望的那样更新 gnpDifference 字段。关于为什么会发生这种情况的想法?

【问题讨论】:

    标签: sql postgresql triggers


    【解决方案1】:

    显然这种情况:IF NEW.gnp_old > NEW.gnp_old 永远不会为真,因此触发器永远不会有任何效果。

    【讨论】:

      猜你喜欢
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      • 2019-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多