删除前两个月的LOG表
  TEZNKK3IfmPf 2023年11月14日 26 0

每1个月重新生成一张LOG表,保留前1个月的LOG表,删除前2个月的LOG表。

如9月份,会重新生成RUS_Log表(和旧表相同),把Log改名为Log_201208,10月份,再把Log_201208删除,保留Log_201209表。

DELIMITER $$

DROP PROCEDURE IF EXISTS `Delete_two_month_before`$$

CREATE DEFINER=`admin`@`%` PROCEDURE `Delete_two_month_before`()

BEGIN

-- rename

SELECT DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL 1 MONTH),'%Y%m') INTO @mtime;

SET @str1="RENAME table RUS_Log to RUS_Log_";

SET @cmd1=CONCAT(@str1,@mtime);

PREPARE stmt1 FROM @cmd1;

EXECUTE stmt1;

DEALLOCATE PREPARE stmt1;

-- create

SET @str2="create table RUS_Log like RUS_Log_";

SET @cmd2=CONCAT(@str2,@mtime);

PREPARE stmt2 FROM @cmd2;

EXECUTE stmt2;

DEALLOCATE PREPARE stmt2;

-- delete_two_month_before

SELECT DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL 2 MONTH),'%Y%m') INTO @two_month;

SET @str3="drop table RUS_Log_";

SET @cmd3=CONCAT(@str3,@two_month);

PREPARE stmt3 FROM @cmd3;

EXECUTE stmt3;

DEALLOCATE PREPARE stmt3;

END$$

DELIMITER ;

 
call Delete_two_month_before();
======================================================================================
事件
 

DELIMITER $$

CREATE EVENT `RUSDB`.`Rus_Log_delete_two_month_before`

ON SCHEDULE EVERY 1 MONTH STARTS '2012-09-01 00:00:00' 

ON COMPLETION PRESERVE ENABLE DO BEGIN

CALL Delete_two_month_before();

END$$

DELIMITER ;

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

TEZNKK3IfmPf