用存储过程批量的删除数据

 

DROP PROCEDURE IF EXISTS `clear_event_demo_pro`;
DELIMITER ;;
CREATE  PROCEDURE `clear_event_demo_pro`(
	IN compare_date datetime,  -- 要删除的日期
	IN delete_limit	int	-- 每次删除的条数
)
    COMMENT '根据时间来删除event_demo'
BEGIN

SET @max_loop = 70;   -- 最多循环50次

SET @loop_times = 1;  -- 当前循环次数

-- 要删除记录的时间
-- SET @compareDate = DATE_ADD(NOW(), INTERVAL - 2 MONTH);


SET @recCount = 0;		-- 当前记录数

SELECT COUNT(*) INTO @recCount
FROM event_demo
WHERE
	`time` < compare_date;


-- 循环的删除记录

WHILE ( @loop_times < @max_loop AND @recCount>0 ) DO

set @loop_times =@loop_times+1;

DELETE
FROM
	event_demo
WHERE
	`time` < compare_date
LIMIT delete_limit;

SET @recCount=@recCount-delete_limit; 
commit;

END WHILE;


END
;;
DELIMITER ;

 

 

 

 

转载于:https://my.oschina.net/u/2552286/blog/3016433

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值