msyql中关于触发器储存过程定时任务的简单例子

#创建用户表
CREATE TABLE `wzm_user` (
  `id` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
  `user_name` char(10) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '用户名',
  PRIMARY KEY (`id`)





#创建一个用户信息记录表
CREATE TABLE wzm_user_log(
id BIGINT NOT NULL auto_increment,
user_name_old VARCHAR(20) ,
user_name_new VARCHAR(20),
PRIMARY KEY(id)
);


#写一个修改用户名添加日志的触发器 
delimiter ;;
CREATE TRIGGER add_user_log AFTER INSERT ON wzm_user FOR EACH ROW
BEGIN 
INSERT INTO wzm_user_log (user_name_old,user_name_new)
VALUES(new.user_name,NULL);
END ;;
delimiter ;




#用户表新增记录 
INSERT INTO wzm_user_log (user_name_old)
VALUES(NOW());

#此时触发器触发 会自动添加日志记录


#查询日志
SELECT * FROM wzm_user_log


#创建一个存储过程用于新增用户日志
delimiter ;;
CREATE PROCEDURE add_user()
BEGIN 
INSERT INTO wzm_user_log (user_name_old)
VALUES(NOW());
END ;;
delimiter ;


#调用添加用户日志的储存过程 
CALL add_user();


#删除 已经存在的定时任务
DROP EVENT IF EXISTS add_user_event;
#变换结束符
delimiter ;;
#创建一个定时任务定时增加
CREATE EVENT add_user_event
#'2018-04-12 14:54:00' 开始 每30秒一次 注意start' 加s 时间戳需要大于当前时间
ON SCHEDULE EVERY 30 SECOND STARTS TIMESTAMP '2018-04-12 15:25:00'
#ON COMPLETION参数表示"当这个事件不会再发生的时候",
#即当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。
#而PRESERVE的作用是使事件在执行完毕后不会被Drop掉,建议使用该参数,以便于查看EVENT具体信息。
ON COMPLETION PRESERVE
DO 
BEGIN 
CALL add_user();
END ;;
delimiter ;








#查看定时任务
SHOW EVENTS ;


#开启定时任务
SET GLOBAL event_scheduler = ON;  


#查看结果
SELECT * FROM wzm_user_log




-- 
-- 查看event是否开启 : SHOW VARIABLES LIKE '%event_sche%';
-- 将事件计划开启 : SET GLOBAL event_scheduler = 1;
-- 将事件计划关闭 : SET GLOBAL event_scheduler = 0;
-- 关闭事件任务 : ALTER EVENT eventName ON COMPLETION PRESERVE DISABLE;
-- 开启事件任务 : ALTER EVENT eventName ON COMPLETION PRESERVE ENABLE;
-- 查看事件任务 : SHOW EVENTS ;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值