mysql - 将列添加到以前缀开头的所有表的过程

标签 mysql

我需要向以前缀“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/

相关文章:

mysql - MySQL 触发器中的事务 ID

php - Mysql 错误代码 : 1242 Subquery returns more than 1 row

php - MySQL - 获取星期几

javascript - stackoverflow 上的 1000 万个问题计数器是如何制作的?

php - Eloquent 地查询与审阅者的电子邮件,其中所有审阅者都有 approval_status 已批准电子邮件

c# - 上课时不阅读按钮单击时输入的表单

MySql 算术与 Excel 不同

c# - 使用C#连接在线MySQL数据库-用户没有权限

c# - 使用 C# 连接到 Mysql 数据库 - 需要一些数据集

MySQL 计算排名然后根据结果更新表