Sql server 2005 向现有表的主键添加标识(自动递增)

Sql server 2005 向现有表的主键添加标识(自动递增),sql-server-2005,Sql Server 2005,可能重复: 我有一个表Activities,有两列:Activity和ActivityId。ActivityId是主键。此表由Users表引用,该表具有ActivityId列(此列未标记为外键-这是问题吗?) 创建此表时,我认为它将是相当静态的,但现在我发现我需要能够相当频繁地添加和删除其中的行,因此我希望在向其添加行时使ActivityId列自动递增。我在SQLServer中读到过,我通过将列设置为标识列来实现这一点,但这只适用于新表 如何向现有表中添加标识,同时保持数据库的一致性?例如,

可能重复:

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

创建此表时,我认为它将是相当静态的,但现在我发现我需要能够相当频繁地添加和删除其中的行,因此我希望在向其添加行时使
ActivityId
列自动递增。我在SQLServer中读到过,我通过将列设置为标识列来实现这一点,但这只适用于新表

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

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

您需要:

  • 添加一个具有identity属性的新的列,并修改PK以包含该字段(我强烈建议您在之后执行
    alter TABLE REBUILD
    ,以清除将从页面拆分创建的所有指针)

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

您需要:

  • 添加一个具有identity属性的新的列,并修改PK以包含该字段(我强烈建议您在之后执行
    alter TABLE REBUILD
    ,以清除将从页面拆分创建的所有指针)

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


如果您使用的是Enterprise/Developer edition,请参阅我的答案,否则,如果不重新生成表,则无法执行此操作


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

如果您使用的是Enterprise/Developer edition,请参阅我的答案,否则,如果不重新生成表,则无法执行此操作

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