我需要在前缀为“art_”的所有表格中添加一定数量的列 如果我手动执行此操作,则需要很长时间,因为它们超过100个具有此前缀的表。
我可以使用程序修改所有这些表吗?如果是这样,程序会是什么样的?
提前感谢您的任何帮助
答案 0 :(得分:1)
所以你需要一个数组中的表列表。
让我们说:$table_names
是一个包含表格列表的数组。如果你有100个表。您也可以使用查询来获取表名列表select * from information_schema.tables
foreach($table_names as $table_name)
{
ALTER TABLE '$table_name'
ADD COLUMN `art_col1` VARCHAR(12) NOT NULL AFTER `last_col`,
ADD COLUMN `art_col2` VARCHAR(12) NOT NULL AFTER `col1`,
ADD COLUMN `art_col3` VARCHAR(12) UNSIGNED NOT NULL AFTER `col2`;
}
答案 1 :(得分:1)
您需要在存储过程中为您的需求创建游标。
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 ;