mysql存储过程定时调用两种方式

mysql存储过程,定时调用两种方式


一、mysql存储过程,通过事件定时调用,要求mysql版本5.1以上

/*==============================================================*/
/* 定义存储过程,操作过期行为日志,要求mysql版本5.1及以上                          */
/*==============================================================*/
/** 定义存储过程,删除行为日志*/
delimiter //
 CREATE PROCEDURE delete_action_log (in date_inter integer)
 BEGIN 
 DELETE from tbl_Log_action where TO_DAYS(SYSDATE()) - TO_DAYS(createDate) > date_inter;
 END; 
 //

 /** 查看event是否开启 */
show variables like '%sche%'; 


/** 将事件计划开启 set global event_scheduler=1;*/
set global event_scheduler = ON;
show variables like '%sche%'; 


/** 创建操作event事件,从2015-03-17凌晨2点50操作删除6天前日志,每日循环执行 */
CREATE EVENT if not exists e_delete_action_log 
on schedule every 1 DAY STARTS '2015-03-17 02:50:00'
on completion preserve enable
do call delete_action_log(60); 


二、linux命令crontab脚本调用

执行调用存储过程,删除30日前的所有日志,每日凌晨调用3点


crontab -e 


0 3 * * * /my/xmol/bin/delActionLog.sh


脚本:delActionLog.sh


#!/bin/sh

# mysql -u 数据库用户名 -p数据库登录密码 某个库<<EOF


mysql -u myxmol -pmyxmol2101169 xmol<<EOF
call delete_action_log2(30);
EOF


定义存储过程:delete_action_log2,其中createDate为表日志时间

delimiter //
 CREATE PROCEDURE delete_action_log2 (in date_inter integer)
 BEGIN 
 DELETE from tbl_Log_action where TO_DAYS(SYSDATE()) - TO_DAYS(createDate) > date_inter;
 END; 
 //



/** 显示全部存储过程*/
SHOW PROCEDURE STATUS;
/** 显示全部事件*/
show EVENTS;


/** 删除存储过程-指定库下执行*/
DROP PROCEDURE IF EXISTS delete_action_log;
/** 删除事件-指定库下执行*/
DROP EVENT IF EXISTS e_delete_action_log;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值