mysql如何创建event并实现保存event执行history

     这篇文章给大家分享的是有关mysql如何创建event并实现保存event执行history的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
 
1.创建保存信息表
 
   点击(此处)折叠或打开
 
CREATE TABLE mysql.t_event_history (
  dbname VARCHAR(128) NOT NULL DEFAULT ,
  eventname VARCHAR(128) NOT NULL DEFAULT ,
  starttime DATETIME NOT NULL DEFAULT 0000-00-00 00:00:00,
  endtime DATETIME DEFAULT NULL,
  issuccess INT(11) DEFAULT NULL,
  duration INT(11) DEFAULT NULL,
  errormessage VARCHAR(512) DEFAULT NULL,
  randno INT(11) DEFAULT NULL,
  PRIMARY KEY (dbname,eventname,starttime),
  KEY ix_endtime (endtime),
  KEY ix_starttime_randno (starttime,randno)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
 
2.创建event模版
 
点击(此处)折叠或打开
 
DELIMITER $$
CREATE EVENT job_del_expire_privileges ON SCHEDULE
#修改以下调度信息
EVERY 10 minute STARTS current_timestamp ON COMPLETION PRESERVE ENABLE DO
BEGIN
 DECLARE r_code CHAR(5) DEFAULT '00000';
 DECLARE r_msg TEXT;
 DECLARE v_error INTEGER;
 DECLARE v_starttime DATETIME DEFAULT NOW();
 DECLARE v_randno INTEGER DEFAULT FLOOR(RAND()*100001);
 
 INSERT INTO mysql.t_event_history (dbname,eventname,starttime,randno) VALUES(DATABASE(),'job_del_expire_privileges', v_starttime,v_randno);
 
 BEGIN
 #异常处理段
 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
 BEGIN
 SET v_error = 1;
 GET DIAGNOSTICS CONDITION 1 r_code = RETURNED_SQLSTATE , r_msg = MESSAGE_TEXT;
 END;
 
 #此处为实际调用的用户程序过程
 CALL automaintain.pro_del_expire_request();
 END;
 
 UPDATE mysql.t_event_history SET endtime=NOW(),issuccess=ISNULL(v_error),duration=TIMESTAMPDIFF(SECOND,starttime,NOW()), errormessage=CONCAT('error=',r_code,', message=',r_msg),randno=NULL WHERE starttime=v_starttime AND randno=v_randno;
 
END$$
DELIMITER ;
感谢各位的阅读!关于“mysql如何创建event并实现保存event执行history”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

dawei

【声明】:南充站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。