触发器上的语法错误让我发疯

时间:2013-06-05 13:21:36

标签: mysql sql triggers

请在这个愚蠢的事情中找到我失去理智的错误....

CREATE TRIGGER ControlVoto
BEFORE INSERT ON havotato
FOR EACH ROW
BEGIN
IF (NEW.voto<0)
then insert into Errori(id_errore) values(1)
end IF;
end

2 个答案:

答案 0 :(得分:0)

你必须在你的表达中使用:NEW

CREATE TRIGGER ControlVoto
BEFORE INSERT ON havotato
FOR EACH ROW
BEGIN
IF (:NEW.voto<0)
then insert into Errori(id_errore) values(1)
end IF;
end

答案 1 :(得分:0)

您错过了;并且需要在MySQL中设置分隔符,我假设您正在使用

delimiter |
CREATE TRIGGER ControlVoto BEFORE INSERT ON havotato
FOR EACH ROW
BEGIN
   IF (NEW.voto < 0) then 
      insert into Errori(id_errore) values(1);
   end IF;
end
|
delimiter ;

如果您没有设置另一个分隔符而不是;,那么该语句将以第一个;结束,并且您的触发器定义将不完整。您需要告诉 MySQL 该语句应该以您定义的分隔符结束。之后,您可以使用delimiter ;

设置分隔符