【问题标题】:Altering candidate key in SQL Server 2005在 SQL Server 2005 中更改候选键
【发布时间】:2011-12-12 21:50:27
【问题描述】:

我有一个相当有趣的任务摆在我面前,我想确保我的想法是正确的 -

我有一个表Part,它的part_id 被用作其他几个表(ABC)的候选键的一部分。我需要删除Part 并改用ProductABC 需要将其 part_id 列(类型为 bigint)替换为新的 product_id 列(数据类型为 int)。我需要使用表格的part_id 列来确定每行需要使用什么product_id

这是我认为我需要做的(想法?):

  1. 在每个表中创建product_id 列(ABC
  2. 将每个表的每一行的product_id设置为适当的值
  3. 删除我对ABC 中的part_id 列的任何约束/fk/pk
  4. 从这些表中完全删除 part_id
  5. 重新创建我之前删除的约束/fk/pk,只有 product_id 成为其中的一部分
  6. 完全删除Part

谁能看到我可能忽略的任何潜在问题?

谢谢!

附加信息:表 A、BC 都有很多数据,所以如果有更高效的方法,我会全力以赴。

【问题讨论】:

    标签: sql-server-2005 tsql foreign-keys database-schema alter-table


    【解决方案1】:

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

    如果 product_id 更改出现问题,如果 part_id 约束仍然存在,您的数据库仍然可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多