DROP FUNCTION IF EXISTS logrotate_new_table_name;
DELIMITER |
CREATE FUNCTION logrotate_new_table_name()
RETURNS VARCHAR(20)
BEGIN
DECLARE suffix VARCHAR(20);
SELECT CONCAT('logs', DATE_FORMAT( NOW(), '%Y%m%d%H%i%s' )) INTO suffix;
return suffix;
END|
DELIMITER ;
DROP PROCEDURE IF EXISTS logrotate;
DELIMITER |
CREATE PROCEDURE logrotate()
BEGIN
DECLARE suffix VARCHAR(20);
SET suffix = logrotate_new_table_name();
DROP TABLE IF EXISTS templogs;
CREATE TABLE templogs LIKE logs;
FLUSH TABLES;
RENAME TABLE logs to suffix, templogs TO logs;
FLUSH TABLES;
END|
DELIMITER ;