我是一个相当简单的触发器,
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生成的问题。
谢谢
答案 0 :(得分:0)
除了前导冒号外,还必须删除一个简单的语法错误。您第一次出现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