将标识(自动增量)添加到现有表的主键

时间:2011-09-06 13:12:17

标签: sql-server-2005

  

可能重复:
  Adding an identity to an existing column
  how to set auto increment after creating a table without any data loss?

我有一个包含两列的表ActivitiesActivityActivityId。 ActivityId是主键。该表由Users表引用,该表具有ActivityId列(此列未标记为外键 - 这是一个问题吗?)

创建此表时,我认为它会非常静态,但现在我发现我需要能够经常添加和删除行,所以我想创建ActivityId列添加行时自动增量。我在sql server中读到过,我通过将列设置为Identity列来实现这一点,但这只适用于新表。

如何在保持数据库一致的同时向现有表添加标识?例如,只要此更改传播到用户表,就可以重新编号ID。

我尝试在SQL Server Management Studio中添加标识,但由于需要删除并重新创建表,因此不允许我保存更改。

2 个答案:

答案 0 :(得分:3)

您需要:

  • 添加具有identity属性的 NEW 列,并更改您的PK以包含该字段(我强烈建议您稍后执行ALTER TABLE REBUILD以清除所有您将通过页面拆分创建的指针)

  • 创建一个具有所需结构的新表并将所有现有数据放入其中

答案 1 :(得分:2)

如果您使用的是Enterprise / Developer版本,请参阅我的回答here,否则无法重建该表。

在SSMS中启用此选项只是您可以设置的一个选项,然后它将为您生成保留现有标识值的整个脚本(工具 - >选项 - >设计器 - > Untick“阻止保存需要表重新生成的更改-creation“)