如何修复AFTER UPDATE触发器

时间:2019-06-05 19:52:02

标签: mysql triggers

我为我的网站创建了一个用户点系统。该表如下所示:

user_id   name    article    gallery    description    total
------------------------------------------------------------
1         joe      7          3          0             10
2         hary     3          5          5             13
3         ana      1          1          2             4

我需要一个AFTER UPDATE触发器,当列,文章,库或说明中的值更改时,它将使列中的更新SUM总计

DELIMITER $$
CREATE TRIGGER total_trg
AFTER UPDATE point_system FOR EACH ROW
BEGIN
UPDATE point_system SET total = (article + gallery + description) FROM point_system WHERE user_id = NEW.user_id;        
END
$$
DELIMITER ;

此触发器不起作用。为什么?

1 个答案:

答案 0 :(得分:0)

您不能通过该表上的触发器修改该表的内容(该触发器所操作的行除外,但不能以此方式);在这种情况下,您需要的是BEFORE UPDATE触发器,您只需

SET NEW.total = NEW.article + NEW.gallery + NEW.description;

您使用NEWOLD访问(并在触发器之前进行修改)负责触发触发器的行的字段值。