【问题标题】:Creating an event inside a mysqlstored procedure在 mysqlstored 过程中创建事件
【发布时间】:2020-06-05 06:53:37
【问题描述】:

我们可以在 MySQL 存储过程中创建一个事件吗?我尝试在 MySQL 存储过程中创建事件调度程序,但未创建事件

【问题讨论】:

    标签: mysql mysql-error-1064 mysql-event


    【解决方案1】:

    MYSQL 文档甚至在 v8 中也没有更新,以消除 https://dev.mysql.com/doc/refman/8.0/en/create-event.html 之间的不一致,后者在最后一句中声明“您可以创建一个事件作为存储例程的一部分,但一个事件不能由另一个事件创建。”和 https://dev.mysql.com/doc/refman/8.0/en/stored-program-restrictions.html 在 EVENT RESTRICTIONS 下声明“不得从存储的程序中创建、更改或删除事件” - 后者是正确的语句。

    【讨论】:

      【解决方案2】:

      Restrictions on Stored Programs

      通常,SQL 准备语句中不允许的语句在存储程序中也不允许。 ... SIGNAL、RESIGNAL 和 GET DIAGNOSTICS 除外,它们不允许作为准备好的语句,但在存储程序中是允许的。

      Prepared Statements

      “准备好的语句中允许的 SQL 语法”列表中没有 CREATE EVENT


      试图创建过程而试图创建事件的原因

      ERROR 1576 (HY000):当 body 存在时,EVENT DDL 语句的递归被禁止。

      【讨论】:

      • 所以我们不能在存储程序中创建事件?
      • @v_Techie 是的,这是真的。但是您可以事先创建非活动事件并在存储过程中启用它。
      猜你喜欢
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多