简体   繁体   English

MYSQL触发语法错误。 #1064

[英]MYSQL trigger syntax error. #1064

delimiter //
CREATE TRIGGER Raiting_added AFTER INSERT ON raiting
FOR EACH ROW
BEGIN

declare del INT;
SET del = (SELECT COUNT( rait_id ) FROM  `raiting` WHERE NEW.movie_id AND user = NEW.user);

IF del > 0 THEN
DELETE FROM movies WHERE movie_id = NEW.movie_id AND user = NEW.user
END IF;

UPDATE movies
SET raiting = ( SELECT ROUND( AVG( seted_rait ) , 1 )
FROM  `raiting` 
WHERE movie_id = NEW.movie_id)
WHERE movie_id = NEW.movie_id
END
delimiter;

Error : #1064 - You have an error in your SQL syntax; 错误:#1064-您的SQL语法有错误; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END IF; 检查与您的MySQL服务器版本相对应的手册,以在'END IF附近使用正确的语法; UPDATE movies SET raiting = ( SELECT ROUND( AVG( seted_rait ) , 1 ) ' at line 10 更新电影SET raining =(SELECT ROUND(AVG(seted_rait),1)'在第10行

what is problem? 有什么问题 can someone help? 有人可以帮忙吗?

You have forgotten "= movie_id" and few semicolons 您忘记了“ = movie_id”和几个分号

delimiter //
CREATE TRIGGER Raiting_added AFTER INSERT ON raiting
FOR EACH ROW
BEGIN

declare del INT;
SET del = (SELECT COUNT( rait_id ) FROM  `raiting` WHERE NEW.movie_id AND user = NEW.user);

IF del > 0 THEN
DELETE FROM movies WHERE movie_id = NEW.movie_id AND user = NEW.user;
END IF;

UPDATE movies
SET raiting = ( SELECT ROUND( AVG( seted_rait ) , 1 )
FROM  `raiting` 
WHERE movie_id = NEW.movie_id)
WHERE movie_id = NEW.movie_id;
END;
//
delimiter ;

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

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