当我的users_reputation
积分表已更新(插入),我想对该用户的积分进行新的计数(SUM)并更新 total_rep
users
中的列表。
这是我想出来的,但不断出现语法错误。如果有人能指出我的错误,我将不胜感激。
CREATE TRIGGER after_insert_rep_points AFTER INSERT ON users_reputation
FOR EACH ROW
BEGIN
DECLARE new_total INT(10);
SELECT SUM(rep_points) INTO new_total FROM users_reputation
WHERE user_id = NEW.user_id;
UPDATE users SET rep_total = new_total WHERE user_id = NEW.user_id;
END
这些是我的表格示例供引用:
用户:
user_id | first_name | total_rep
-------------+----------------+--------------
10001 | Jim | 17
10002 | Bob | 5
USERS_REPUTATION:
user_id | rep_task | rep_points | rep_date
-----------+-------------------------------+--------------+-----------------------
10001 | Commented on article | 5 | 2012-11-12 08:40:32
10001 | Read an article | 2 | 2012-06-12 12:32:01
10001 | Shared an article | 10 | 2012-06-04 17:39:44
10001 | Read an article | 2 | 2012-05-19 01:04:11
10002 | Commented on article | 5 | 2012-06-17 09:34:21
最佳答案
您需要在开头添加分隔符更改。
delimiter |
CREATE TRIGGER after_insert_rep_points AFTER INSERT ON users_reputation
...
END
|
delimiter ;
分隔符向数据库引擎发出语句结束信号。通常是;
。但这会在第一个 ;
处结束存储过程。而且它的定义是不完整的。
您可以更改分隔符并将其添加到过程末尾。之后将分隔符更改回 ;
关于mysql - 触发器语句中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13342134/