mysql 创建存储过程根据ID范围删除数据,防止大事务提交

CREATE DEFINER=`root`@`%` PROCEDURE `delete_sales_order_original_by_Id`()
BEGIN  

DECLARE MINID INT;
DECLARE MAXID INT;

SELECT id INTO MINID FROM sales_order_header_original WHERE created>'2024-04-28' ORDER BY ID ASC LIMIT 1;
SELECT id + 3000 INTO MAXID FROM sales_order_header_original WHERE created>'2024-04-28' ORDER BY ID DESC LIMIT 1;

WHILE MINID <= MAXID DO
DELETE  sodo
FROM
	sales_order_header_original soho
	LEFT JOIN sales_order_detail_original sodo ON soho.id = sodo.salesOrderId 
 WHERE soho.id >= MINID AND soho.id < MINID + 3000;
 DELETE FROM sales_order_header_original WHERE id >= MINID AND id < MINID + 3000 ;
SET MINID = MINID + 3000;

END WHILE;
END

posted @ 2024-05-10 17:26  darling331  阅读(4)  评论(0编辑  收藏  举报