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权限!那真是浪费了一个小时!无论如何,谢谢:)天哪,我讨厌我花几个小时在一个问题上,开始发帖,然后最后的“可能已经有你答案的问题”会给我一个答案。就像这里。谢谢