Mysql 触发器语句中的语法错误
当我的Mysql 触发器语句中的语法错误,mysql,sql,Mysql,Sql,当我的users\u rep积分表得到更新(插入)时,我想对该用户的积分进行新的计数(总和),并更新users表中的total\u rep列 这就是我想到的,但不断出现语法错误。如果有人能指出我的错误,我将不胜感激 CREATE TRIGGER after_insert_rep_points AFTER INSERT ON users_reputation FOR EACH ROW BEGIN DECLARE new_total INT(10); SELECT SUM(rep_points) I
users\u rep
积分表得到更新(插入)时,我想对该用户的积分进行新的计数(总和),并更新users
表中的total\u rep
列
这就是我想到的,但不断出现语法错误。如果有人能指出我的错误,我将不胜感激
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
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
用户\u声誉:
user_id | first_name | total_rep
-------------+----------------+--------------
10001 | Jim | 17
10002 | Bob | 5
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 ;
分隔符向DB引擎发出语句结束的信号。通常是代码>。但这将在第一次时结束存储过程代码>。它的定义将是不完整的
您可以更改分隔符并将其添加到过程的末尾。之后,将分隔符更改回代码>并且我的共享主机帐户不支持“超级用户”MySQL权限!那真是浪费了一个小时!无论如何,谢谢:)天哪,我讨厌我花几个小时在一个问题上,开始发帖,然后最后的“可能已经有你答案的问题”会给我一个答案。就像这里。谢谢