首页 > 解决方案 > MySQL Workbench 语法无效

问题描述

我是一个相当简单的触发器,

CREATE DEFINER = CURRENT_USER TRIGGER 'nfl`.`games_AFTER_INSERT` AFTER 
INSERT ON `games` FOR EACH ROW
BEGIN
 UPDATE nfl.teams t
 SET t.passingyards = t.passingyards +:new.homepassingyards,
     t.rushingyards = t.rushingyards +:new.homerushingyards
 WHERE t.teamname =:new.hometeamname;
END

但是我不断收到一个奇怪的语法错误:

"+" is not valid at this position for this server version, expecting '-', '*', '/', '%', '<<','>>',...

我正在运行 MySQL 版本 8.0.11 和 InnoDB 的默认存储引擎。我搜索了 MySQL 版本,这个版本支持触发器,所以我在这里很迷茫。这是如何在顶部声明触发器的问题吗?我不习惯“CREATE DEFINER”语法,并认为这可能是问题所在,但是当您尝试创建新触发器时,它是 MySQL Workbench 生成的。

谢谢

标签: mysqlmysql-workbench

解决方案


一个简单的语法错误,在前导冒号旁边,必须删除。您第一次出现时使用了不同的引号nfl。这是正确的形式:

CREATE DEFINER = CURRENT_USER TRIGGER `nfl`.`games_AFTER_INSERT` AFTER INSERT ON `games` FOR EACH ROW
BEGIN
 UPDATE nfl.teams t
 SET t.passingyards = t.passingyards + new.homepassingyards,
     t.rushingyards = t.rushingyards + new.homerushingyards
 WHERE t.teamname = new.hometeamname;
END

推荐阅读