簡體   English   中英

創建用於在 postgres 中計算總和的觸發器

[英]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 / DELETEvote表時,它都會自動更新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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM