繁体   English   中英

触发器语句中的语法错误

[英]Syntax error in trigger statement

当我的users_reputation点表更新(插入)时,我想获取此用户点的新计数(SUM)并更新users表中的total_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

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 ;

分隔符向DB引擎发出语句结束的信号。 通常是; 但那会在第一时间结束存储过程; 它的定义是不完整的。

您可以更改分隔符并将其添加到过程的末尾。 之后将分隔符更改回;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM