【问题标题】:MySQL Multiple triggers (using BEGIN/END) not able to be created无法创建 MySQL 多个触发器(使用 BEGIN/END)
【发布时间】:2014-11-04 21:57:56
【问题描述】:

我正在尝试在 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';

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

【问题讨论】:

    标签: mysql triggers


    【解决方案1】:

    您需要定义除; 之外的另一个分隔符。

    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 ;
    

    否则数据库会认为您的触发器定义在第一个 ; 结束,这将使其不完整,缺少 beginend

    【讨论】:

      猜你喜欢
      • 2013-12-12
      • 2015-03-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 2020-11-22
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多