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

 

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 ;
相关文章
相关标签/搜索