2013-08-29 68 views
0

我有一张会员表和一张文章表。如何在行插入或删除时触发递增/递减?

成员可以对文章投票。每个投票都被记录下来。

我想在添加投票行时将文章作者的投票数加1,当文章作者的投票数与投票行的删除数相同时减1。

我该怎么做在MySQL?我知道你可以使用触发器,但我该怎么做呢?

回答

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演示

+0

这是伟大的,但我也需要能够以更新的成员表中的两个领域 - 点和lifetime_points。他们会更新完全一样的投票领域。我怎么做? – Padraig

+0

好的,对不起。我不知道。我确定接受这个答案。这里是链接到新问题[链接](http://stackoverflow.com/questions/18522789/how-to-update-multiple-tables-and-fields-in-a-mysql-trigger) – Padraig

+0

这没关系。谢谢。你没有解释什么是积分和生命点。你能详细说明吗? – peterm