【发布时间】:2020-07-25 09:29:12
【问题描述】:
我创建了以下 PostgreSQL 函数和相应的触发器。我想往user_star_raider表中插入数据,raider表中的stars列数据可以自动加1,但是现在我使用当前函数和触发器,结果不符合预期,能帮帮我吗?
攻略表:
raider_id | stars | visits
-----------+-------+--------
13243 | 0 | 4525
user_star:
user_id | raider_id | star_date
---------+-----------+-----------
我创建函数和触发器:
CREATE OR REPLACE FUNCTION auto_increase_star() RETURNS TRIGGER AS $$
BEGIN
UPDATE raider SET stars = stars + 1 WHERE raider.raider_id = new.raider_id;
RETURN new;
end
$$
LANGUAGE plpgsql;
CREATE TRIGGER add_user_star_raider_trigger
AFTER INSERT ON user_star_raider FOR EACH ROW EXECUTE PROCEDURE auto_increase_star();
当我在use_star_raider 中插入一行('1900327840@qq.com', '13243', '2020-07-25') 时,我希望raider stars 列增加1。
有什么好的解决办法吗?
【问题讨论】:
-
我认为您可能缺少“PL/pgSQL”和“postgresql”标签。另外,请发布您的“user_star_raider”表的定义,除非“user_star:”是一个错字并且您不小心错过了“_raider”部分。请注意,“不符合预期”过于含糊。当你尝试这个时会发生什么?
-
触发器看起来正确,你得到什么错误?
-
您的代码有效:dbfiddle.uk/….
-
一直正常工作。我修改了auto_increase_star()函数后,在插入记录之前对raider进行了更新操作,所以没有正常工作。
标签: sql postgresql plpgsql database-trigger