mysql分表批量增删改字段有什么好的解决方案?
项目现在遇到一个多表结构难以维护的问题。具体问题是这样的。 我们的后台会发布项目task
, 发布后产生task_id
, 例如task_id = 120
, 然后,项目会被管理员审核。 审核没问题之后, 就要确认发布项目, 此时, 项目120
会分出10
张表, 比如task_data_120
, task_check_120
, ...
, 这十张表是用来实现任务的各种功能用的, 都不可或缺。随着task
的增加, 分表就越来越多, 比如有10
个task
, 那么就会分出100
个表来。如果此时要求task
的某张分表比如task_data_xx
表要增加一个字段, 那么这task_data
相关十张表的字段都要同步增加字段。同理, 如果字段名称要修改, 那么相关表的字段也会同步被修改。如果想实现这样的字段批量维护, 有什么好的建议吗?
我们使用的是PHP
Yii2
框架, 数据库是mysql5.7
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
每次更新or增加数据库字段,都使用php脚本修改or增加,然后循环每个task表进行修改。
可以参考laravel中的migration 貌似在github中也有yii版本的(具体是否符合你的预期可能需要你亲自看下了)。
很明显 你这种表的设计就存在问题了。所以建议重新考虑一下
我没有在实际情况中遇到这样的问题,不过我有些想法可以一起讨论下。
1、触发器 一张表的字段被修改了,触发器触发修改其他表的字段(触发器调用存储过程,当前看的所有task_XX表都修改)
2、如果不好改业务逻辑,那不能不能这样?加一个拓展字段,里面存的是json数据,每次拓展对象的属性,而不是直接加字段?
3、每次修改执行存储过程,如下面这个,查找出所有表,循环添加字段