2009-11-16 26 views
4

是否有可能以某种方式使用NOW()函数或类似的MYSQL重命名表()?重命名表为'NOW()+ old_table_name'

我需要的,这是因为而不是丢弃旧表直线距离我们更愿意首先重命名然后old_ 日期表中被采用,OUF-的使用 _ table_name的,所以当我们actualy删除它,我们的理由不知过了多久表一直是“不可用”

回答

7

您可以创建一个动态SQL语句并执行:

SET @tablename = 'MyTable'; 

SELECT @query := CONCAT('RENAME TABLE `', @tablename, '` TO `', 
    CURDATE(), @tablename, '`'); 

PREPARE STMT FROM @query; 
EXECUTE STMT; 

curdate()函数返回当前日期字符串格式yyyy-MM-dd

P.S.您不能在查询浏览器中执行这样的多行语句,但可以将它们放入文件(例如commandfile.sql)中并运行它们:

mysql -u <user> -p<password> <dbname> < commandfile.sql