如何在存储过程中创建事件?
这是我一直在尝试做的,它告诉我有一个语法错误,只是它没有告诉我在哪里。
-- --------------------------------------------------------------------------------
-- 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语句递归
但是还没有解决办法,那我怎么办呢?
3条答案
按热度按时间s5a0g9ez1#
不能在过程内部创建。需要单独定义它。
只需检查Mysql Event Scheduler
详细博客:http://goo.gl/6Hzjvg
e5nqia272#
“创建事件”和“更改事件”,我们通过直接“请求”MySQL引擎数据库在特殊外部应用程序中创建。
将触发器或过程中的行插入到专用表“Need create_alter event”和循环阅读行的专用外部应用程序中,然后直接向MySQL引擎数据库发送create/alter事件请求
hvvq6cgz3#
这是不可能的。最接近的方法是使用字符串构建在SP内部创建一个预准备语句。然后将预准备语句保存到一个表“scheduled_queries”中。使用外部脚本(bash/python等)构建一个简单的“runner”来执行表“scheduled_queries”中的任何内容。
只有在大量使用创建/更改/删除事件的情况下才值得引入runner设置。