我需要向以前缀“art_”开头的所有表添加一定数量的列。
如果我手动执行此操作,将需要很长时间,因为带有此前缀的表超过 100 个。
我可以使用程序来修改所有这些表吗?如果是这样,程序会是什么样子?
预先感谢您的帮助
最佳答案
您需要根据您的要求在存储过程中创建游标。
select *
from information_schema.tables
以上查询将返回数据库中的所有表。
DELIMITER $$
CREATE PROCEDURE `addprefix`()
BEGIN
DECLARE r_table_name VARCHAR(50);
DECLARE loop_end INTEGER DEFAULT 0;
DECLARE cur1 CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = "db_name";
DECLARE CONTINUE HANDLER FOR NOT FOUND SET loop_end = 1;
OPEN cur1;
rootLoop : LOOP
FETCH cur1 INTO r_table_name;
IF loop_end THEN
LEAVE rootLoop;
END IF;
IF SUBSTR(r_table_name,0,4) = "art_" THEN
your COLUMN ADD CODE;
END IF;
END LOOP rootLoop;
CLOSE cur1;
END$$
DELIMITER ;
关于mysql - 将列添加到以前缀开头的所有表的过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37158472/