如何在行插入或删除时触发递增/递减?

时间:2013-08-29 03:12:21

标签: mysql triggers

我有一张成员表和一张文章表。

会员可以对某篇文章进行投票。每个人都会记录一次投票。

我希望在添加投票行时,文章作者投票总数增加1,当投票行被删除时,文章作者的投票结果会减1。

我如何在MySQL中做到这一点?我知道你可以使用触发器,但我该怎么办?

1 个答案:

答案 0 :(得分:2)

你可以这样做

CREATE TRIGGER tg_ai_article_votes
AFTER INSERT ON article_votes
FOR EACH ROW 
  UPDATE articles
     SET votes = COALESCE(votes, 0) + 1
   WHERE id = NEW.article_id;

CREATE TRIGGER tg_ad_article_votes
AFTER DELETE ON article_votes
FOR EACH ROW 
  UPDATE articles
     SET votes = COALESCE(votes, 0) - 1
   WHERE id = OLD.article_id;

您没有提供特定的表架构,因此我在示例中使用表名和列名进行了即兴创作。

这是 SQLFiddle 演示