我在数据库中有两个表。 Table1从某个Utility程序获取数据。我希望每周或每月更新我的table2 avg值,无需任何用户干预。 任何有想法如何做的人请指导我的例子。 谢谢!!
答案 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后,您会看到它正常工作。