mysql - 在存储过程中创建事件

Posted

技术标签:

【中文标题】mysql - 在存储过程中创建事件【英文标题】:mysql - create event in store procedure 【发布时间】:2013-01-02 10:37:54 【问题描述】:

如何在存储过程中创建事件?

这是我一直在尝试做的,它告诉我有语法错误,只是它没有告诉我在哪里。

-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `update_leaderboard`()
BEGIN


CREATE EVENT update_leaderboard_event
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 minute
    DO call update_leaderboard();



END

编辑: 根据我的mysql(最后一行)应该是可能的:

语法”。您可以创建一个事件作为存储例程的一部分,但 事件不能由另一个事件创建。

Edit2发现问题:

错误 1576:当正文时,EVENT DDL 语句的递归被禁止 存在

但是还没有解决办法,那我该怎么办呢?

【问题讨论】:

【参考方案1】:

您不能创建内部程序。需要单独定义。

只需检查 Mysql Event Scheduler 详细博客:http://goo.gl/6Hzjvg

【讨论】:

阅读最后一行:语法”。您可以创建一个事件作为存储例程的一部分,但一个事件不能由另一个事件创建。【参考方案2】:

“CREATE EVENT”和“ALTER EVENT”我们在特殊的外部应用程序中由 将“请求”直接发送到 MySQL 引擎数据库。

将触发器或过程中的行插入特殊表“Need create_alter event” 和特殊的外部应用程序循环读取行,然后直接发送关于 创建/更改 MySQL 引擎数据库的事件

【讨论】:

以上是关于mysql - 在存储过程中创建事件的主要内容,如果未能解决你的问题,请参考以下文章

如何从 python 在 mysql 中创建存储过程?

在 MySql/phpmyadmin 中创建存储过程

试图在 Mysql 中创建存储过程的语法错误?

使用 C# 在 MySQL 中创建存储过程

mysql在存储过程中创建触发器

在 MySQL 存储过程中创建临时表