在写定时任务(作业)时,我们想在任务体里面写SQL语句时,“先删除AA表,再创建AA表时放入数据,然后再写一些其他的插入语句”,发现删除表和创建表的语句不能放在里面,否则保存不成功,但是按照下图所示,设置了分界符delimiter $后就正常可以保存了;观察一段时间后,也是正常执行的;AA表也如我们愿、不断地删除、重建;
-- 创建事件
CREATE EVENT IF NOT EXISTS event_user
ON SCHEDULE EVERY 5 SECOND
ON COMPLETION PRESERVE
COMMENT '新增用户信息定时任务'
DO INSERT INTO S(s,sname) VALUES(null,CONCAT('王小',NOW()));
-- 修改事件 (必须使用分界符,才能顺利把删除表、创建表语句给顺利写入为一个定时任务,而不是马上去执行)
delimiter $
ALTER
EVENT event_user
ON SCHEDULE EVERY 5 SECOND
ON COMPLETION PRESERVE
COMMENT '新增用户信息定时任务'
DO
BEGIN
drop TABLE IF EXISTS AA;
CREATE TABLE AA SELECT * FROM S WHERE S.S>=515;
INSERT INTO S(s,sname) VALUES(null,CONCAT('王小',NOW()));
INSERT INTO S(s,sname) VALUES(null,CONCAT('王小','sdf'));
end $
delimiter;
SHOW PROCESSLIST;
-- 查看目前有哪些事件
SELECT * FROM information_schema.events;
-- 开启事件调度器
SET GLOBAL event_scheduler = ON;
-- 关闭事件调度器
SET GLOBAL event_scheduler = OFF;
-- 查看事件调度器状态
SHOW VARIABLES LIKE 'event_scheduler';