1. 程式人生 > >用儲存過程批量的刪除資料

用儲存過程批量的刪除資料

 

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 ;