gpt4 book ai didi

mysql - 如何使用随机事件名称从存储过程创建事件?

转载 作者:行者123 更新时间:2023-11-29 03:12:58 27 4
gpt4 key购买 nike

我想从 MySQL 存储过程 执行一个 CREATE EVENT sql。

  • 我不能使用 PREPARE,因为在 PREPARE 中不允许创建事件,我想使用一个随机名称,因为我需要创建一个唯一的事件,并且我需要在 DO 部分传递一些日期参数。
  • MySQL 没有 EXEC。

SQL 是这样构建的:

SET @sql=CONCAT('CREATE EVENT myevent',md5(concat(@dt1,@dt2)),' ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 0 SECOND
DO
call genRoutes(''',@dt1,''',''',@dt2,''');
');

生成的@sql 查询如下所示:

CREATE EVENT myeventcadb1e41722fb3c9b2e6992e740d76ca ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 0 SECOND
DO
call genRoutes('2011-04-07 00:00:00','2011-04-14 00:00:00');

服务器版本 5.1.31-社区

如何在存储过程中执行此操作?

最佳答案

如果您不能直接这样做,也许您可​​以将即将发生的对 genRoutes(或其他)的调用存储在一个表中,并使用单个事件来管理下一个调用。任何时候您添加到即将发生的调用表中,如果新调用比表中最快的调用早,您可以调用更改事件以在新时间触发。当事件触发时,调用所有准备就绪的事件,将它们从表中删除,并更改事件以在下一个最快的调用时触发。

或者,您可以只设置一个每小时、15 分钟、5 分钟(或其他时间)触发的事件,然后轮询表格以查找就绪调用。

关于mysql - 如何使用随机事件名称从存储过程创建事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5250026/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com