删除表数据的存储过程, 可用于定时任务, 以达到定时清理数据的需求
DROP PROCEDURE procedure_table_clean;
CREATE PROCEDURE procedure_table_clean()
BEGIN
DECLARE no_more_record integer DEFAULT 0;
DECLARE id varchar(36);
DECLARE num integer default 0;
DECLARE cur_record CURSOR FOR SELECT UUID FROM table_1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_record = 1; # 当没有记录时赋值为1
OPEN cur_record;
FETCH cur_record INTO id;
WHILE no_more_record != 1 DO
DELETE FROM table_1 WHERE col_id = id;
IF num > 1000
THEN
COMMIT; SET num = 0;
ELSE
SET num = num + 1;
END IF;
FETCH cur_record INTO t_uuid;
END WHILE;
COMMIT;
CLOSE cur_record;
# 游标释放
END;
本文介绍了一种使用存储过程定时清理数据库中特定表数据的方法。通过定义游标遍历目标表,逐条删除数据,并在每处理1000条记录后提交事务,确保了数据清理的效率和安全性。
292

被折叠的 条评论
为什么被折叠?



