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
- 创建一个具有所需结构的新表,并将所有现有数据放入其中
在SSMS中启用此选项只是您可以设置的一个选项,然后它将为您生成保留现有标识值的整个脚本(工具->选项->设计器->取消勾选“防止保存需要重新创建表的更改”)如果您使用的是Enterprise/Developer edition,请参阅我的答案,否则,如果不重新生成表,则无法执行此操作 在SSMS中启用此选项只是您可以设置的一个选项,然后它将为您生成保留现有标识值的整个脚本(工具->选项->设计器->取消勾选“防止保存需要重新创建表的更改”)