【问题标题】:How to update values of foreign key fields referencing to a parent table in MySQL?如何更新引用 MySQL 中父表的外键字段的值?
【发布时间】:2019-06-19 17:49:38
【问题描述】:

我正在将表格迁移到新格式,作为该过程的一部分,我需要删除行并将它们压缩为一行。但是,其他表正在引用这些旧行。

有没有办法自动将引用旧行的外键的值更新为新创建行的“id”,还是只能手动遍历所有引用表?我使用数字 (id) 来识别行。

唯一可能的方法是遍历每个引用表并使用多个子查询更新旧值或禁用外键检查然后删除旧行,但这不会更新子表中的值。

错误消息:SQL 错误 (1451):无法删除或更新父行: 外键约束失败...(我无法显示的表名)

【问题讨论】:

    标签: mysql foreign-keys


    【解决方案1】:

    我建议您先在旧 ID 和新 ID 之间创建一个映射,然后临时引入一个名为 NewId 的新字段,您将从该映射中填充该字段。接下来,一旦您填充了所有新的 Id,您就可以简单地从新的 Id 中更新您的主 Id 并完全删除 NewId 列。

    当然,在开始任何键更新之前,您需要禁用外键约束,请阅读this post 了解如何执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 2010-12-07
      • 2018-09-10
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      相关资源
      最近更新 更多