Balavan  发表于 2020-9-17 17:00 显示全部楼层 楼主
在线系统中的表的数据处理


在线系统中,如果发现某表数据需要重新导入,但又不允许
truncate


蓝墨水  发表于 2020-9-18 12:45 显示全部楼层 沙发
使用下面的存储过程进行renametable操作

CREATE DEFINER="root"@"%"PROCEDURE" proc_renametable"(INold_tbl_name
VARCHAR,INnew_tbl_nameVARCHAR(100))
BEGIN
DECLARE tmp_tbl_name VARCHAR(150);
DECLARE sqlstring VARCHAR(1000);
SET autocommit=0;/*closeautocommitfunction*/
SET tmp_tbl_name=CONCAT;
SET @sqlstring=CONCAT('altertable',old_tbl_name,'renameto
',tmp_tbl_name);
PREPARE STMT1 FROM @sqlstring;
EXECUTE STMT1;
SET @sqlstring=CONCAT('altertable',new_tbl_name,'renameto
',old_tbl_name);
PREPARE STMT2 FROM @sqlstring;
EXECUTE STMT2;
SET @sqlstring=CONCAT('altertable',tmp_tbl_name,'renameto
',new_tbl_name);
PREPARE STMT3 FROM @sqlstring;
EXECUTE STMT3;
COMMIT;
SET auto commit=1;
您需要登录后才可以回帖 登录 | 立即注册