gpt4 book ai didi

sql - 触发器尚未执行但已创建

转载 作者:行者123 更新时间:2023-11-29 14:07:33 25 4
gpt4 key购买 nike

我有一个触发器函数,我试图在 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 字段。关于为什么会发生这种情况的想法?

最佳答案

显然这个条件:IF NEW.gnp_old > NEW.gnp_old 永远不会为真,所以触发器永远不会有任何效果。

关于sql - 触发器尚未执行但已创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15364312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com