Sql 触发器尚未执行它';他创造了

Sql 触发器尚未执行它';他创造了,sql,postgresql,triggers,Sql,Postgresql,Triggers,我有一个触发器函数,我想让它在Postgres中执行 它编译并添加触发器,但是它没有像我希望的那样将值插入表中 它使用的函数如下所示: CREATE OR REPLACE FUNCTION calc_gnpDifference(n integer, o integer) RETURNS NUMERIC AS $$ SELECT $1 ::numeric - $2::numeric AS gnpDifference; $$ LANGUAGE SQL; 以及触发部分: CREATE

我有一个触发器函数,我想让它在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字段。思考为什么会发生这种情况?

显然,这种情况:
如果新的.gnp\u旧的>新的.gnp\u旧的
永远不会是真的,所以触发器永远不会有任何效果。

显然,这种情况:
如果新的.gnp\u旧的>新的.gnp\u旧的
永远不会是真的,所以触发器永远不会有任何效果