我有一个数据库,每个客户端包含一个表,每个表中都有相同的列。我们正在谈论数千个客户表。
我需要为这些表中的每一个添加新列以进行新的开发,但是无法找到一种方法来递归数据库中的所有表以添加列。我知道MS SQL有sp_MSforeachtable可能满足我的要求,但是我不知道MySQL是否有类似的东西?
答案 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方面比我更熟练的人不会同意。