MySQL无法创建多个触发器(使用BEGIN / END)

时间:2014-11-04 21:57:56

标签: mysql triggers

我正在尝试在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语法错误而失败。如果我删除了BEGINEND;,则会添加触发器并正常运行:

CREATE Trigger tg_month_avg_tst AFTER UPDATE ON eventlog
  FOR EACH ROW
    UPDATE month_avg set month = '9' where id = '585';

是什么阻止了第一个例子中的触发器的创建?

1 个答案:

答案 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}}