2015-01-01 39 views
0

我收到此消息“#1064 - 您的SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以获得在第6行附近使用的正确语法“但无法弄清楚什么是错的。错误在触发器中的SQL语法,MySQL

(位置和点MEDIUMINT,他们不是主键也不是唯一的)

有人吗?

CREATE TRIGGER pointsAssigns 
before INSERT ON MyTable 
    FOR EACH ROW 
BEGIN 
IF NEW.position>6 THEN 
    set NEW.points=5; 
END IF; 
END; 
+0

添加'END;'作为最后line.Also你使用分隔符? – Mihai

+0

我试了两次,但没有工作......错误应该在'5'。 – Stereo89

回答

1

由于@Mihai提到要么添加关闭END和更改DELIMITER

DELIMITER // 
CREATE TRIGGER pointsAssigns 
BEFORE INSERT ON MyTable 
FOR EACH ROW 
BEGIN 
    IF NEW.position > 6 THEN 
    SET NEW.points = 5; 
    END IF; 
END // 
DELIMITER ; 

这里是一个SQLFiddle演示

或使一个行触发器,然后你不既不需要BEGIN...END块也不需要改变DELIMITER

CREATE TRIGGER pointsAssigns 
BEFORE INSERT ON MyTable 
FOR EACH ROW 
    SET NEW.points = IF(NEW.position > 6, 5, NEW.points); 

这里是一个SQLFiddle演示

+0

我已经尝试过,但只有现在它似乎工作.. THNAK YOU – Stereo89

+0

@ Stereo89你很欢迎:)祝你好运。 – peterm