首页 > 解决方案 > Postgresql 轻松更新堆栈限制达到错误

问题描述

我有一张超级简单的桌子

id, entries, max_capacity, factor 所以我们有前 500 个最大容量和 250 个条目,它应该是 50 个(50% 满)容易吧?问题是当我更新条目时,我也希望因子自动更新,所以我完成了这个功能:

create function myUp() returns trigger as $$
begin
update myTable
set factor=round(100*(entries/max_capacity),0);
end;
$$ language plpgsql;

和触发器

create trigger myUp 
after insert or update on myTable
for each row
execute procedure myUp();

我得到了一个新的触发函数并运行了一个更新示例

update myTable
set entries=500
where id=1;

在我更新其中一行的条目时,我得到 ERROR stack depth limit exceeded CONTEXT update myTable....

为什么我会得到这个?我是否必须为所有行设置条目才能正常工作?我不知道为什么它不起作用。我想要之后,因为在插入新条目值之前我无法计算该值。

标签: sqlpsqldatabase-trigger

解决方案


推荐阅读