2013-08-29 66 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