您好,欢迎访问一九零五行业门户网

MYSQL存储过程及事件_MySQL

关于mysql下的存储过程以及事件的创建
下面这个存储过程主要实现的功能就是查询表里面半年前的数据,如果有就存到文件,然后将数据删除。
create definer = `root`@`localhost` procedure `newproc`()beginselect count(*) into @count from s_account where date_add(registertime, interval 6 month)0then set @today=time_to_sec(now()); set @select_sql=concat(select * from s_account where date_add(registertime, interval 6 month)<=now() into outfile 'c:/\\,@today,.txt' fields terminated by ',';); prepare charu from @select_sql; execute charu; delete from s_account where date_add(registertime, interval 6 month)<=now() ; commit;end if;end;
fields terminated by ',' 字段间分割符
optionally enclosed by '' 将字段包围 对数值型无效
lines terminated by '\n' 换行符下面是创建事件的代码 ,逻辑是从'2014-11-05 09:00:00'开始,每天去执行pro_test()这个过程。
create definer=`root`@`localhost` event `newevent`on schedule every 1 day starts '2014-11-05 09:00:00'on completion not preserveenabledocall pro_test();
当我们在创建事件的时候有可能会提示事件处于关闭状态,这个时候就需要手动开启事件。
首先在sql中查询计划事件的状态:show variables like 'event_scheduler'
如果返回的是off表示当前是关闭状态,如果是on当前已经开启了计划任务。
在mysql程序的目录下找到my.ini文件,添加一个项:event_scheduler = 1
保存后重启mysql服务即可,重启服务可以在服务管理里面找到.
也可以用脚本来实现:
mysql event_scheduler
开启event_scheduler sql指令:
set global event_scheduler = on;
set @@global.event_scheduler = on;
set global event_scheduler = 1;
set @@global.event_scheduler = 1;
相反,关闭event_scheduler指令:
set global event_scheduler = off;
set @@global.event_scheduler = off;
set global event_scheduler = 0;
set @@global.event_scheduler = 0;
其它类似信息

推荐信息