最近在搞MYSQL。不停的在在复制表,后来嫌麻烦,写了一个存储过程。
大家可能都非常清楚如何去复制一张表:
create table new_table_name like old_table_name;
insert into new_table_name (select * from old_table _name);
这两句sql虽然简单,但是在需要大量跟之前完全一样的表时,不断的去写这两句sql太麻烦了,于是我将它写成了存储过程, 代码如下:
DELIMITER $$
CREATE
PROCEDURE `img`.`copy_table`(IN new_table_name varchar(30),IN old_table_name varchar(30))
/*主体部分*/
BEGIN
declare old_Tname varchar(30);
set old_Tname=old_table_name;
set @stmt=concat("create table ",new_table_name," like ",old_Tname);
set @stmt2=concat("insert into ",new_table_name," (select * from ",old_Tname,")");
/*执行sql*/
prepare stmt from @stmt;
execute stmt;
prepare stmt2 from @stmt2;
execute stmt2;
END$$
DELIMITER ;
这样写的话,每次只需调用copy_table(‘new_table’,’old_table’)就可以了,是不是特别的方便。
这个存储过程很简单,当然大家如果感兴趣的话,可以往里面添加新功能。