触发器中的错误 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演示
我收到此消息“#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演示