每周或每月的MYSQL查询自动化

时间:2014-04-01 06:20:04

标签: mysql stored-procedures triggers

我在数据库中有两个表。 Table1从某个Utility程序获取数据。我希望每周或每月更新我的table2 avg值,无需任何用户干预。 任何有想法如何做的人请指导我的例子。 谢谢!!

1 个答案:

答案 0 :(得分:0)

  

我希望每周或每月以平均值更新我的table2,无需任何用户干预。

您可以自动使用MySQL event scheduler

您可以为每个活动时间定义多个计划程序,例如一个用于每周更新,另一个用于每月更新

示例

delimiter //
drop event if exists monthly_event_scheduler_on_table2;

create event if not exists monthly_event_scheduler_on_table2
  on schedule every 1 month 
     -- you can change the following statement 
     -- to start it within next few minutes or so ...
     starts timestamp( current_date + interval 1 month, '00:00:00' )
     -- starts now();

  comment 'monthly update event scheduling on table2'
  do
    -- better practice is writing a procedure for the update process.
    call db_name.procedure_name_that_updates_the_table2_records();
;
//
delimiter ;

您可以定义在预定时间戳上每周运行的类似事件。

确保您没有定义此类事件。如果存在,则必须删除它并重新创建新定义。

请参阅MySQL: CREATE EVENT Syntax

事件安排程序的默认状态为DISABLED 您需要通过以下任何语句启用它。

SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;

当事件调度程序为ON时,事件调度程序线程在SHOW PROCESSLIST的输出中列为守护程序进程,其状态如下所示:

mysql> SHOW PROCESSLIST\G
*************************** 2. row ***************************
     Id: 2
   User: event_scheduler
   Host: localhost
     db: NULL
Command: Daemon
   Time: 3
  State: Waiting for next activation
   Info: NULL

将事件调度程序设置为ON后,您会看到它正常工作。

请参阅MySQL Event Scheduler Configuration