Heim >Datenbank >MySQL-Tutorial >Mysql使用存储过程和Event事件定期删除数据_MySQL

Mysql使用存储过程和Event事件定期删除数据_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-01 13:26:041095Durchsuche

bitsCN.com

整个过程总共分为三步:

1. 写存储过程

2. 写Event事件

3. 把Event事件设置成Enable并打开事件任务

1. 存储过程

首先定义一个存储过程,del_data,传入一个int参数就是保留的log内容天数,过程的内容就是删除t_xxx表一周外的数据和删除t_log表的保留天数外的数据。

create procedure del_data(IN `date_inter` int)begin	delete from t_xxx where date < date_sub(curdate(),interval 7 day);	delete from t_log where date < date_sub(curdate(),interval date_inter day);end 

2. 写Event事件

定义del_event,在Event事件中定义事件执行的开始事件和频率,事件设置成Enable,并且到点的时候执行del_data存储过程(传进去的天数是30天)。

create event del_event  on schedule EVERY 1 day  STARTS &#39;2014-01-01 03:00:00&#39;  ON COMPLETION  PRESERVE ENABLE  do  call del_data(30)

还可以控制事件的开启个关闭:

关闭事件任务: alter event del_event ON COMPLETION PRESERVE DISABLE;
开户事件任务: alter event del_event ON COMPLETION PRESERVE ENABLE;

你也可以使用show events看看刚才新建的事件。

3. 打开事件任务

查看event是否开启: show variables like '%sche%';
将事件计划开启: set global event_scheduler = ON; 

当然,你也可以把存储过程写在Event事件中,就是不太规范啦:

delimiter |CREATE EVENT e_daily    ON SCHEDULE      EVERY 1 DAY    COMMENT &#39;Saves total number of sessions then clears the table each day&#39;    DO      BEGIN        INSERT INTO site_activity.totals (time, total)          SELECT CURRENT_TIMESTAMP, COUNT(*)            FROM site_activity.sessions;        DELETE FROM site_activity.sessions;      END |delimiter ;
bitsCN.com
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn