[英]Create triggers for calculating sum in postgres
我在 postgres 中有这个表
CREATE TABLE voting_option (
id SERIAL PRIMARY KEY,
-- SUM of all vote values for this voting option id
votes_value INT NOT NULL DEFAULT 0
);
CREATE TABLE vote (
id SERIAL PRIMARY KEY,
voting_option_id INT NOT NULL,
-- can be positive/negative or 0
value INT NOT NULL
);
我想创建触发器,每次我将记录INSERT
/ UPDATE
/ DELETE
到vote
表时,它都会自动更新votes_value
。
是这样的:
对于插入: votes_value
+= vote.value
对于删除: votes_value
-= vote.value
对于更新: votes_value
= votes_value
- old vote.value
+ new vote.value
正如@JimJones 所注意到的,您所需要的只是这个简单的视图。 您还将拥有干净的仅插入工作流作为奖励,而不是伪装的更新工作流。
create view voting_option_v as
select voting_option_id id, sum(value) votes_value
from vote
group by voting_option_id;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.