0

是否可以创建每个周末开始的 mysql 事件。它应该在每个星期五晚上 7 点开始,每隔 1 小时执行一次,并在每个星期一早上 5 点结束。(查询更新 cron 进程每分钟读取的表)

似乎mysql事件“ENDS”只是绝对时间。此外,似乎不可能创建会禁用或删除另一个事件的事件。

所以,它看起来像 mysql 事件限制,我可能必须结合 mysql 事件和 cron 进程来处理“ENDS”。

任何帮助,将不胜感激。

4

1 回答 1

1

我想到了两种方法:

  1. 将您的活动设置为每小时运行一次。在事件主体中放置一个丑陋的 IF。

    SELECT  @dow    := dayofweek(NOW())
    ,       @oclock := hour(NOW());`
    
    IF (@dow = 6 AND @oclock >= 19) 
    OR (@dow = 7) 
    OR (@dow = 1 AND @oclock <= 5) THEN 
        -- run your code here 
    END IF;
    
    • 优点:它很简单,而且很有效。
    • 缺点:丑得要命。
  2. 使用多个事件来实现它。例如:

    a) 您的第一个活动在每周五 19:00 举行;

    b) 它创建一个每小时运行的事件,从 CURRENT_TIMESTAMP 开始,到 CURRENT_TIMESTAMP + 您需要的小时数结束。

    • 优点:不会有虚拟运行。充分利用事件。
    • 缺点:更高的复杂性和“动态”事件。需要考虑权限/跟踪/警报/等
于 2018-03-08T08:47:15.177 回答