试试这个
DELIMITER |
CREATE PROCEDURE daily_backup()
BEGIN
SET @s = CONCAT('CREATE TABLE bak_', DATE_FORMAT(CURDATE(), '%Y%m%d'), ' SELECT * FROM table1');
PREPARE stmt FROM @s;
EXECUTE stmt;
END
|
DELIMITER ;
更新:你可以让它一天运行多次
DROP PROCEDURE daily_backup;
DELIMITER |
CREATE PROCEDURE daily_backup()
BEGIN
SET @tbl = DATE_FORMAT(CURDATE(), '%Y%m%d');
SET @s = CONCAT('DROP TABLE IF EXISTS bak_', @tbl);
PREPARE stmt FROM @s;
EXECUTE stmt;
SET @s = CONCAT('CREATE TABLE bak_', @tbl, ' SELECT * FROM table1');
PREPARE stmt FROM @s;
EXECUTE stmt;
END
|
DELIMITER ;
这是SQLFiddle演示