MySQL 存储过程进行切换表

来源:这里教程网 时间:2026-03-01 15:07:16 作者:
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_revoke_table`$$
CREATE DEFINER=`root`@`%` PROCEDURE `sp_revoke_table`(p_table_name VARCHAR(100))
BEGIN
	SET @t_tb_src = p_table_name;
	SELECT CONCAT("create table _tmpdba like ", @t_tb_src) INTO @t_sql FROM DUAL;
	PREPARE stmt_1 FROM @t_sql;
	EXECUTE  stmt_1;
	DEALLOCATE PREPARE stmt_1;	
	
	SELECT CONCAT("_", @t_tb_src, "_",  DATE_FORMAT(NOW(),'%Y%m%d_%H%i%s'), "_del") INTO @t_table_today FROM DUAL;
	SELECT CONCAT("rename table ", @t_tb_src, " TO ",@t_table_today, ", _tmpdba to ", @t_tb_src ) INTO @t_sql FROM DUAL;
	PREPARE stmt_2 FROM @t_sql;
	EXECUTE  stmt_2;
	DEALLOCATE PREPARE stmt_2;
	
    END$$
DELIMITER ;

相关推荐