mysql event建立模板(可记录执行履历)
建立履历记录表
CREATETABLE`mysql`.`t_event_history`(`dbname`VARCHAR(128)NOTNULLDEFAULT'',`eventname`VARCHAR(128)NOTNULLDEFAULT'',`starttime`DATETIMENOTNULLDEFAULT'0000-00-0000:00:00',`endtime`DATETIMEDEFAULTNULL,`issuccess`INT(11)DEFAULTNULL,`duration`INT(11)DEFAULTNULL,`errormessage`VARCHAR(512)DEFAULTNULL,`randno`INT(11)DEFAULTNULL,PRIMARYKEY(`dbname`,`eventname`,`starttime`),KEY`ix_endtime`(`endtime`),KEY`ix_starttime_randno`(`starttime`,`randno`))ENGINE=INNODBDEFAULTCHARSET=utf8;
2.event 建立模板
DELIMITER$$CREATEDEFINER=`root`@`localhost`EVENT`job_update_status`ONSCHEDULE#修改以下调度信息EVERY5minuteSTARTSnow()ONCOMPLETIONPRESERVEENABLEDOBEGINDECLAREr_codeCHAR(5)DEFAULT'00000';DECLAREr_msgTEXT;DECLAREv_errorINTEGER;DECLAREv_starttimeDATETIMEDEFAULTNOW();DECLAREv_randnoINTEGERDEFAULTFLOOR(RAND()*100001);INSERTINTOmysql.t_event_history(dbname,eventname,starttime,randno)#修改下面的作业名(该作业的名称)VALUES(DATABASE(),'job_update_status',v_starttime,v_randno);BEGIN#异常处理段DECLARECONTINUEHANDLERFORSQLEXCEPTIONBEGINSETv_error=1;GETDIAGNOSTICSCONDITION1r_code=RETURNED_SQLSTATE,r_msg=MESSAGE_TEXT;END;#此处为实际调用的用户程序过程CALLautomaintain.pro_update_status();END;UPDATEmysql.t_event_historySETendtime=NOW(),issuccess=ISNULL(v_error),duration=TIMESTAMPDIFF(SECOND,starttime,NOW()),errormessage=CONCAT('error=',r_code,',message=',r_msg),randno=NULLWHEREstarttime=v_starttimeANDrandno=v_randno;END$$DELIMITER;
3.查询event
select * from mysql.event;
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。