在MySQL数据库中的所有相似表(包含相同架构)上运行ALTER TABLE

时间:2018-10-09 14:16:25

标签: mysql

我有一个数据库,每个客户端包含一个表,每个表中都有相同的列。我们正在谈论数千个客户表。

我需要为这些表中的每一个添加新列以进行新的开发,但是无法找到一种方法来递归数据库中的所有表以添加列。我知道MS SQL有sp_MSforeachtable可能满足我的要求,但是我不知道MySQL是否有类似的东西?

1 个答案:

答案 0 :(得分:0)

根据this previous answer in SO,您可以执行以下操作:

select concat('ALTER TABLE `',table_name,'` ADD `test` INT NOT NULL AFTER `column_x`;')
from information_schema.tables
where table_schema = 'your_db_name'

然后删除一些与客户端无关的表(这里希望客户端是拥有“专用表”的唯一实体),或者在可能的情况下在table_name上添加条件(例如AND table_name LIKE "client_%"),然后执行整个批次。

对于该用例而言,使用过程的第二种解决方案(对我而言)太复杂了,但是也许在PLSQL方面比我更熟练的人不会同意。