网站里的图片切换怎么做,深圳网站建设代理,北京网站维护公司,公司怎么建立网站吗1.什么是事件一组SQL集#xff0c;用来执行定时任务#xff0c;跟触发器很像#xff0c;都是被动执行的#xff0c;事件是因为时间到了触发执行#xff0c;而触发器是因为某件事件(增删改)触发执行#xff1b;mqsql的事件类似于linux的定时任务#xff0c;不过是完全在m…1.什么是事件一组SQL集用来执行定时任务跟触发器很像都是被动执行的事件是因为时间到了触发执行而触发器是因为某件事件(增删改)触发执行mqsql的事件类似于linux的定时任务不过是完全在mqsql内部实现的。事件是在一个独立的事件调度线程中被初始化这个事件调度线程和处理链接的线程没有任何关系。并且该线程在事件执行结束后会自动销毁。2.开启事件查看是否开启show variables like event_scheduler;如果显示OFF,则输入以下语句开启set global event_scheduler on;查看事件通过show events;可以查看创建的事件3.创建自定义事件首先创建一张测试表。create table test_table(id int auto_increment primary key,create_time datetime default CURRENT_TIMESTAMP null)comment 用来测试的表;3.1 语法CREATE EVENT [IFNOT EXISTS] event_nameONSCHEDULE schedule[ONCOMPLETION [NOT] PRESERVE][ENABLE | DISABLE][COMMENT comment]DO sql_statement;解释event_name自己取的事件名schedule触发的时间周期。写法为AT TIMESTAMP [ INTERVAL INTERVAL]或 EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]AT 时间戳用来完成单次的计划任务EVERY 时间(单位)的数量实践单位[STARTS 时间戳] [ENDS时间戳]用来完成重复的计划任务。其中 INTERVAL 的取值又有每年/每月等等{YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}很多但是常用的YEARMONTHDAYHOURMINUTE 或者SECOND。剩下的不标准的不建议使用。ON COMPLETION参数表示当这个事件不会再发生的时候即当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而PRESERVE的作用是使事件在执行完毕后阻止该事件被Drop掉。所以对于特定时间执行的事件如果保持默认执行完毕后事件将被删除不想删除的话要设置成ON COMPLETION PRESERVE。对于重复性时间如果设置了ON COMPLETION NOT PRESERVE那么也是只会在执行一次后停止并删除事件。[ENABLE | DISABLE] 可以设置该事件创建后状态是否开启或关闭默认为ENABLE。[COMMENT ‘comment’]可以给该事件加上注释。3.2 例子3.2.1 每隔10秒插入一条记录CREATE EVENT e_test_insertON SCHEDULE EVERY 10 SECONDDO insert INTO test_table (create_time) VALUES (current_timestamp)可以通过show events;查看刚创建的事件查看test_table3.2.2 在特定时间执行一次CREATE EVENT e_test_insert_atON SCHEDULE AT TIMESTAMP 2020-05-28 11:00:00DO insert INTO test_table (create_time) VALUES (current_timestamp)到时间后查看test_table确实执行了。再查看一下事件被删除了。验证了前面的ON COMPLETION参数3.2.3 在指定延时后执行一次CREATE EVENT e_test_insert_atON SCHEDULE AT CURRENT_TIMESTAMPINTERVAL 50 SECONDONCOMPLETION PRESERVEDO insert INTO test_table (create_time) VALUES (current_timestamp)50秒后执行一次并且不要完成后不要删除任务。并且执行完成后没有被删除3.2.4 5分钟后开始每10秒插入一次CREATE EVENT e_test_insertON SCHEDULE EVERY 10 SECONDSTARTS CURRENT_TIMESTAMPINTERVAL 5 MINUTEDO insert INTO test_table (create_time) VALUES (current_timestamp)Starts关键字可以指定在什么时候开始3.2.5 指定时间后结束CREATE EVENT e_test_insertON SCHEDULE EVERY 10 SECONDSTARTS CURRENT_TIMESTAMPINTERVAL 1 MINUTEENDS CURRENT_TIMESTAMPINTERVAL 2 MINUTEDO insert INTO test_table (create_time) VALUES (current_timestamp);在当前1分钟后开始在当前2分钟后结束。所以只会执行1分钟。3.2.6 每天的定时执行CREATE EVENT e_test_insert_dayON SCHEDULE EVERY 1 DAYSTARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)DO insert INTO test_table (create_time) VALUES (current_timestamp);每天1点执行一次。DATE_ADD是MySQL得内置函数对某个时间加上指定时间。3.2.7 每个月的29号0点30分执行一次CREATE EVENT e_test_insert_monthON SCHEDULE EVERY 1 MONTHSTARTS DATE_ADD(DATE_ADD(2020-04-29, INTERVAL 1 MONTH), INTERVAL 30 MINUTE)DO insert INTO test_table (create_time) VALUES (current_timestamp);3.2.8 每小时的30分时执行一次CREATE EVENT e_test_insert_hourON SCHEDULE EVERY 1 HOURSTARTS DATE_ADD(2020-05-28 13:30:00, INTERVAL 1 HOUR)DO insert INTO test_table (create_time) VALUES (current_timestamp);4删除事件语法DROP EVENT [IF EXISTS] event_name如果事件不存在会报错。所以执行时最好加上IF EXISTS5 修改事件语法ALTER EVENT event_name[ON SCHEDULE schedule][RENAME TO new_event_name][ON COMPLETION [NOT] PRESERVE][COMMENT comment][ENABLE | DISABLE][DO sql_statement]5.1 临时关闭事件ALTER EVENT e_test DISABLE;5.2 开启事件ALTER EVENT e_test ENABLE;5.3 将每天清空test表改为5天清空一次ALTER EVENT e_test ON SCHEDULE EVERY 5 DAY;