更改复合键以包含sql server 2005中新添加的列

时间:2009-12-24 07:29:26

标签: sql sql-server-2005

我有一张表GB_Assignor_Assignee。我有一个主键,包括这个组合(StateCode,CountyID,Doc_Type_Group_Code)。现在我必须添加一个新列Doc_Type_Code。我通过改变表添加它。我想在这个主键中包含这个新列。所以我的组合将是(StateCode,CountyID,Doc_Type_Group_Code,Doc_Type_Code)。

如何更改此主键以添加新列。我不想放弃它然后重新创建它。请建议。

2 个答案:

答案 0 :(得分:3)

如果要更改主键以包含新列,则必须删除并重新创建它 - 没有其他方法。创建后,您无法将列添加到现有主键。

问题是:你最好不要创建一个新的人工ID(INT类型)作为你的PK吗?如果出现另一列,则不必更改它,引用该表将更容易(仅在一个INT而不是五列或六列上加入)......

答案 1 :(得分:0)

你必须放弃并重建你的PK。

  • 这涉及删除引用它的任何外键。这在任何情况下都应该是显而易见的,因为外键也必须改变以反映新列。 (希望在复合PK的情况下并不多)。
  • 放弃PK本身。
  • 使用附加列创建新PK。
  • 重新创建所有外键。

最简单的方法是在SQL Server的表设计器中进行更改,并要求它为您生成更改脚本。