mysql中的定时器及存储过程
2015-11-06 17:24
866 查看
需求:今天遇到mysql中的日志表需要设置最大存储量、最多存储天数,多余的删除
存储过程代码如下:
定时器代码如下:
存储过程代码如下:
DELIMITER // DROP PROCEDURE if exists log_system; CREATE PROCEDURE log_system (in u_n INT,u_d INT,s_n INT,s_d INT)//u_d用户日志天数,u_n用户日志数,s_n系统日志数,s_d系统日志天数 BEGIN SET u_d = (SELECT userloggingDate FROM logging_prameter); //通过设置表得到用户日志天数 DELETE FROM user_logging WHERE time <= (select date_add(sysdate(),interval - u_d day) as yestoday);//通过算法算出系统时间前去用户日志天数,得到应该删除的时间点 IF (SELECT COUNT(*) FROM user_logging) > (SELECT userLoggingNumber FROM logging_prameter) THEN SET u_n = (select COUNT(*) FROM user_logging)-(SELECT userLoggingNumber FROM logging_prameter); DELETE FROM user_logging ORDER BY time LIMIT u_n; END IF; SET s_d = (SELECT sysLoggingDate FROM logging_prameter); DELETE FROM sys_logging WHERE time <= (select date_add(sysdate(),interval - s_d day) as yestoday); IF (SELECT COUNT(*) FROM sys_logging) > (SELECT sysLoggingNumber FROM logging_prameter) THEN SET s_n = (select COUNT(*) FROM sys_logging)-(SELECT sysLoggingNumber FROM logging_prameter); DELETE FROM sys_logging ORDER BY time LIMIT s_n; END IF; END; //DELIMITER
定时器代码如下:
DELIMITER // SET GLOBAL event_scheduler = ON; DROP EVENT IF EXISTS `eventSysUserLogging`; CREATE EVENT IF NOT EXISTS `eventSysUserLogging` ON SCHEDULE EVERY 1 DAY STARTS TIMESTAMP(CURRENT_DATE,'17:30:00') ON COMPLETION PRESERVE ENABLE DO BEGIN CALL log_system(@u_n,@u_n,@s_n,@s_d);//调用储存过程 END; // DELIMITER
相关文章推荐
- mysql
- crontab定时备份mysql不执行
- 源码安装MySQL
- 三、安装配置多实例MYSQL5.6-多独立配置文件方法
- MySQL存储过程中declare和set定义变量的区别
- 更改MySQL数据库的编码为utf8mb4
- MYSQL函数大全
- MySQL Cluster, Fabric, Cobar 三大集群特性对比
- mysql的复制原理
- Play Framework jpa MySQL整合
- mysql5.7.9 源码安装
- mysql5.6 下载地址
- Windows环境下mysql自动备份
- MySQL general log、slow log配置及管理
- 防止人为误操作MySQL数据库技巧
- scala+play2.2.2+slick2.0.2 + mysql5.0整合之一---基础环境搭建篇
- mysql update中需要根据条件列更新写法update case
- mysql简单建表
- mysql 转orecle 需要考虑的问题
- mysql 卸载