我正在尝试在MySql 5.6.20中为InnoDB数据库创建一个触发器。我想对同一类型的触发器执行多个查询,而BEGIN / END方法(解决方法?)似乎适用于其他人:Multiple insert/update statements inside trigger?
CREATE Trigger tg_month_avg_tst AFTER UPDATE ON eventlog
FOR EACH ROW BEGIN
UPDATE month_avg set month = '9' where id = '585';
END;
这会因SQL语法错误而失败。如果我删除了BEGIN
和END;
,则会添加触发器并正常运行:
CREATE Trigger tg_month_avg_tst AFTER UPDATE ON eventlog
FOR EACH ROW
UPDATE month_avg set month = '9' where id = '585';
是什么阻止了第一个例子中的触发器的创建?
答案 0 :(得分:2)
您需要定义另一个分隔符,而不是;
。
delimiter |
CREATE Trigger tg_month_avg_tst AFTER UPDATE ON eventlog
FOR EACH ROW BEGIN
UPDATE month_avg set month = '9' where id = '585';
END
|
delimiter ;
否则,数据库会认为您的触发器定义在第一个;
结束,这会使其不完整,错过end
的{{1}}