触发更新另一个表的计数器

时间:2011-11-05 02:34:01

标签: mysql

似乎无法让这个触发器工作......一些帮助将不胜感激。

DROP TRIGGER IF EXISTS trigger_votes;

CREATE TRIGGER trigger_votes AFTER INSERT ON votes
UPDATE collections
SET IF(vote = 1, loves, hates) = IF(vote = 1, loves, hates) + 1
WHERE collections.id = NEW.collection_id;

当表格投票中记录了新的“投票”时,我想在包含计数的表集合中增加“loves”或“hates”列。 votes表有一个名为collection_id的列,它对应于collections表中的记录。

1 个答案:

答案 0 :(得分:4)

DELIMITER $$

CREATE TRIGGER trigger_votes AFTER INSERT ON votes FOR EACH ROW
BEGIN
  UPDATE collections
    SET loves = CASE NEW.vote WHEN 1 THEN loves + 1 ELSE loves END
        ,hates = CASE NEW.vote WHEN 1 THEN hates ELSE hates + 1 END 
    WHERE collections.id = NEW.collection_id;
END $$

DELIMITER ;