mysql定时器⽤法总结、实例、时间实例
1、创建定时器事件
语法如下:
CREATE EVENT [IF NOT EXISTS] ‘事件名’
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement
2、修改事件 使⽤ALTER EVENT来修改事件,具体的ALTER语法如下,与创建事件的语法类似: ALTEREVENT event_name ON SCHEDULE schedule [RENAME TOnew_event_name] [ON COMPLETION [NOT]PRESERVE] [ENABLE | DISABLE] [COMMENT 'comment'] DO sql_statement;
3、关于事件计划的权限: 单独使⽤event调⽤SQL语句时,查看和创建需要⽤户具有event权限,调⽤该SQL语句时,需要⽤户具有执⾏该SQL的权限。Event权限的设置保存在mysql.user表和mysql.db表的Event_priv字段中。(FLUSH PRIVILEGES;) 当event和procedure配合使⽤的时候,查看和创建存储过程需要⽤户具有create routine权限,调⽤存储过程执⾏时需要使⽤excute权限,存储过程调⽤具体的SQL语句时,需要⽤户具有执⾏该SQL的权限。 SELECT HOST,USER,Event_priv FROM mysql.user; (Figure1:user表的Event_priv权限) 获取当前登陆的⽤户和数据库:SELECT CURRENT_USER(), SCHEMA(); 从Figure1可以知道bfsql@%是没有Event_priv权限的,在该⽤户下创建事件的时候会出现下⾯的错误: Error Code: 1044 Access denied for user 'bfsql'@'%' to database 'blog' 如果出现上⾯的错误,执⾏下⾯的SQL就可以给bfsql@%赋予创建Event的权限:UPDATE mysql.user SET Event_priv = 'Y' WHERE HOST='%' AND USER='bfsql'; 如果你这个时候再次执⾏创建Event的SQL,还是会出现上⾯的错误,因为你需要执⾏: FLUSH PRIVILEGES;最后,你可以通过SHOW GRANTS FOR 'bfsql'@'%';查看所有权限;
4、实例 CREATE EVENT testEvent ON SCHEDULE EVERY 10 SECOND STARTS now() ON COMPLETION PRESERVE ENABLE DO BEGIN -- 现在执⾏每隔10秒执⾏⼀次 INSERT INTO ad_db.fh_test_timer ( VALUE) VALUES (now()); -- 循环要⼲的事情 可以调⽤其他存储过程 如:call test(); END 注意:如果调⽤的是,存储过程,则do后⾯的begin end不要。
5、开启、关闭定时器 开启(执⾏sql语句如下): SET GLOBAL event_scheduler = 1; -- 启动定时器 ALTER EVENT testEvent ON COMPLETION PRESERVE ENABLE; -- 开启事件 关闭定时器: SET GLOBAL event_scheduler = 0; -- 关闭定时器 ALTER EVENT testEvent OFF COMPLETION PRESERVE DISABLE; -- 关闭事件 总结:键值1或者ON表⽰开启;0或者OFF表⽰关闭;
rotate的名词6、时间设置实例 ON SCHEDULE 计划任务,有两种设定计划任务的⽅式: 1. AT 时间戳,⽤来完成单次的计划任务。 2. EVERY 时间(单位)的数量时间单位[STARTS 时间戳] [ENDS时间戳],⽤来完成重复的计划任务。 在两种计划任务中,时间戳可以是任意的TIMESTAMP 和DATETIME导航软件代码
数据类型,时间戳需要⼤于当前时间。 在重复的计划任务中,时间(单位)的数量可以是任意⾮空(Not Null)的整数式,可以选 1 second,3 minute,5 hour,9 day,1month,1 quarter(季度),1 year ,分别对应多少秒、分钟、⼩时、天、⽉、季度、年 重复计划如: a、从2013年12⽉18号0点开始,每天运⾏⼀次 ON SCHEDULE EVERY 1 DAY STARTS '2013-12-18 00:00:00' b、 从现在开始每隔九天定时执⾏ ON SCHEDULEEVERY9 DAY STARTSNOW() ; c、 每个⽉的⼀号凌晨1 点执⾏ on schedule every1 monthstartsdate_add(date_add(date_sub(curdate(),interval day(curdate())-1day),interval 1 month),interval 1 hour); D、 每个季度⼀号的凌晨1点执⾏ on schedule every1 quarterstartsdate_add(date_add(date(concat(year(curdate()),'-
霹雳布袋戏最强反派mysql查看所有存储过程>特朗普死亡原因
critical structure',elt(quarter(curdate()),1,4,7,10),'-',1)),interval1 quarter),interval 1 hour); F、 每年1⽉1号凌晨1点执⾏ on schedule every1 yearstartsdate_add(date_add(date(concat(year(curdate()),'-',elt(quarter(curdate()),1,4,7,10),'-',1)),interval1 quarter),interval 1 hour); 7、其他 其他命令: /* SHOW VARIABLES LIKE '%sche%'; -- 查看定时器状态 SET GLOBAL event_scheduler = 1; -- 启动定时器 SET GLOBAL event_scheduler = 0; -- 停⽌定时器 ALTER EVENT testEvent ON COMPLETION PRESERVE ENABLE; -- 开启事件 ALTER EVENT testEvent ON COMPLETION PRESERVE DISABLE; -- 关闭事件 */ 注意: 1、mysql定时器是从mysql5.1开始的,如果你的mysql版本低于5.1,那就不能使⽤mysql定时器,查询mysql版本的⽅法:select version() 2、mysql定时器,默认是关闭的。 3、查询⾃⼰创建的定时器: SELECT * FROM mysql.event;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论