可能重复:
Adding an identity to an existing column
how to set auto increment after creating a table without any data loss?
我有一个包含两列的表Activities
:Activity
和ActivityId
。 ActivityId是主键。该表由Users
表引用,该表具有ActivityId
列(此列未标记为外键 - 这是一个问题吗?)
创建此表时,我认为它会非常静态,但现在我发现我需要能够经常添加和删除行,所以我想创建ActivityId
列添加行时自动增量。我在sql server中读到过,我通过将列设置为Identity列来实现这一点,但这只适用于新表。
如何在保持数据库一致的同时向现有表添加标识?例如,只要此更改传播到用户表,就可以重新编号ID。
我尝试在SQL Server Management Studio中添加标识,但由于需要删除并重新创建表,因此不允许我保存更改。
答案 0 :(得分:3)
您需要:
添加具有identity属性的 NEW 列,并更改您的PK以包含该字段(我强烈建议您稍后执行ALTER TABLE REBUILD
以清除所有您将通过页面拆分创建的指针)
创建一个具有所需结构的新表并将所有现有数据放入其中
答案 1 :(得分:2)
如果您使用的是Enterprise / Developer版本,请参阅我的回答here,否则无法重建该表。
在SSMS中启用此选项只是您可以设置的一个选项,然后它将为您生成保留现有标识值的整个脚本(工具 - >选项 - >设计器 - > Untick“阻止保存需要表重新生成的更改-creation“)