在mysql中建了很多表,表名包含日期(例如:20111205),如何将超过10天(即10天之前)的表全部删除掉?

解决方案 »

  1.   

    只能用存储过程或者你自己的程序来实现。在你自己的程序中,则可以 show tables like 'xxx%'; 得到相应表名,然后再进行 drop 这些表。存储过程中的话,则可以通过 select TABLE_NAME from INFORMATION_SCHEMA.TABLES  where ... 得到表名,然后构成相应"DROP TABLE XX"的字符串, 再用PREPARE, EXECUTE执行这个字符串中的SQL语句。
      

  2.   

    然后每天凌晨crontab调用
    CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_droptable_errorlog`()
    BEGIN
       set @sql = concat('drop table errorlog_',date_format(date_add(now(),interval -10 day),'%Y%m%d'));
     prepare stmt from @sql;
       execute stmt;
    end
      

  3.   

    写个存储过程删除表,写个数据库event每天执行这个存储过程