触发器中的错误 SQL 语法,MySQL

Error SQL syntax in a trigger, MySQL

我收到此消息“#1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,了解在 '' 附近使用的正确语法第 6 行”,但无法找出问题所在。

(position和points是MEDIUMINT,它们不是主键也不唯一)

有人吗?

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

正如@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演示