mysql - 将“错误”外键迁移到“正确”外键的最佳方法?
问题描述
就上下文而言,我有一个 Laravel 6 项目,委婉地说,当我继承它时,它做出了一个相当奇怪的选择,关于如何管理关系。
我有一个用户对象,它具有通常的自动增量 ID,以及由外部系统提供的“system_id”。
对于大多数项目,涉及用户对象的关系使用它们的“id”字段作为关系的 belongsTo() 部分中的外键,这一切都很好。
但是,一种多对多关系,特别是用于用户模型和组模型之间关系的关系,使用用户模型的“system_id”字段作为外键,而不是在其他任何地方使用的通常的“id”字段。开始引起各种开发头痛,并且已经投入生产。
因此,作为系统清理项目的一部分,我打算迁移数据透视表以使用用户模型的“id”字段。现在的挑战如下:
以与数据库无关的方式,如何将匹配的 id 复制到给定已知“system_id”的数据透视表中的“user_id”外键字段。
它在迁移中会是什么样子?迁移甚至是一个不错的选择,还是应该直接在数据库中完成?
还有什么我应该解释的吗?
这首先是一个好主意还是我们应该接受它?
显然,将进行备份,并且将首先在测试环境中对整个事物进行测试,然后再尝试将其投入生产。
解决方案
推荐阅读
- html - Materializecss navbar logo 图片位置
- nginx - Nginx 不会重定向多个位置
- python-3.x - 如何在元素通过 Selenium 和 Python 在 HTML DOM 中呈现之前与元素交互
- asp.net-mvc - 附加到来自 HtmlHelper DropDownListFor MVC 的原始选定值的匿名数字
- c - 在 for 循环中使用变量作为数组的索引而不是在每次迭代时计算它们真的更快吗?
- sqlite - SQLite 仅将数字或字母从一列复制到另一列
- jenkins - Jenkins groovy MissingMethodException 没有方法的签名
- python - 如何用逗号分隔嵌套列表的所有元素?
- spring-boot - springboot-mongodb CRUD 应用程序
- ruby-on-rails-5 - Ruby on Rails 5.2 主动存储调整 png 松散透明度