[英]What is wrong MySQL Trigger
CREATE TRIGGER updateRank BEFORE UPDATE ON question
SELECT SUM(favouriteCount) as fav FROM question WHERE created_user = NEW.created_user
FOR EACH ROW
BEGIN
UPDATE users SET rank = (SELECT id FROM Rank WHERE fav > range) WHERE id=NEW.created_user
END
您的SQL语法有误; 检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第2行的
'SELECT SUM(favouriteCount) as fav FROM question WHERE created_user = NEW.created'
附近使用'SELECT SUM(favouriteCount) as fav FROM question WHERE created_user = NEW.created'
如何解决?
您不能将类似的聚合函数用于触发器。 但是您可以将逻辑移到UPDATE
:
CREATE TRIGGER updateRank BEFORE UPDATE ON question
FOR EACH ROW
BEGIN
UPDATE users u CROSS JOIN
(SELECT SUM(favouriteCount) as fav
FROM question
WHERE created_user = NEW.created_user
) f
SET rank = (SELECT r.id FROM Rank r WHERE f.fav > r.range)
WHERE u.id = NEW.created_user;
END;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.