1

我有一个相当有趣的任务在我前面,我要确保我想它正确 -改变候选键2005

我有一个表Part有其part_id被用作的一部分其他几个表的候选键(AB,C)。我需要删除Part并使用ProductA, B,C需要将它们的part_id列(其类型为bigint)替换为新列product_id(其数据类型为int)。我需要使用表格中的part_id列来确定我需要为每行使用哪些product_id

这里是我的想法是什么,我需要做的(想法):

  1. 在每个表中创建product_id柱(ABC
  2. 设置的product_id每一行中的每个表为适当的值
  3. 降任何约束/ FK /包我有在Apart_id的柱,BC
  4. 下降,从这些表的part_id完全
  5. 重建约束/ FK/PK我同期下降,只有product_id成为其中的一部分,而不是
  6. 删除Part表完全

任何人都可以看到任何潜在的我可能忽略的问题?

谢谢!

附加信息:表A,Bç都有了大量的数据,因此,如果有更好的性能的方式,我洗耳恭听。

回答

0

在删除part_id上的约束之前以及在删除列part_id之前,您应该能够在product_id上创建新约束。你应该这样做 - 首先创建新的约束。

如果product_id更改出错,那么如果part_id约束仍然存在,那么您的数据库仍然可用。