我正在尝试触发一个 mysql 事件来对现实世界的事件做出反应。
设置:我创建了一个持久事件,并试图从存储过程中重新安排它。
在存储过程中,我计算一个时间戳并将其存储在 l_EndDateTime 中。
ALTER EVENT MyEvent
ON SCHEDULE EVERY 4 HOUR STARTS l_EndDateTime
ON COMPLETION PRESERVE;
这给出了错误 1054,说它不是一个有效的列。
阅读此评论后:
ON SCHEDULE 子句可以使用涉及内置 MySQL 函数和用户变量的表达式来获取它包含的任何时间戳或间隔值。您不能在此类表达式中使用存储例程或用户定义的函数,也不能使用任何表引用;但是,您可以使用 SELECT FROM DUAL。对于 ALTER EVENT 和 CREATE EVENT 语句都是如此。从 MySQL 5.1.13 开始,在这种情况下,特别不允许对存储例程、用户定义函数和表的引用,并且会因错误而失败(参见 Bug #22830)。
我试过这个:
ALTER EVENT MyEvent
ON SCHEDULE EVERY 4 HOUR STARTS (SELECT l_EndDateTime FROM DUAL)
ON COMPLETION PRESERVE;
这给出了不同的错误。
有什么建议么?