【问题标题】:Error SQL syntax in a trigger, MySQL触发器中的错误 SQL 语法,MySQL
【发布时间】:2015-01-01 18:08:22
【问题描述】:

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

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

有人吗?

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

【问题讨论】:

  • 在最后一行添加END;。你还使用DELIMITER吗?
  • 我都试过了,但都不起作用..错误应该在'5'中。

标签: mysql syntax triggers insert


【解决方案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演示

【讨论】:

  • 我以前尝试过,但现在似乎有效..THNAK 你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 2015-06-02
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多