2011-09-06 51 views
1

可能重复:
Adding an identity to an existing column
how to set auto increment after creating a table without any data loss?加入恒等式(自动递增),以现有的表的主键

我有一个表Activities有两列:ActivityActivityId。 ActivityId是主键。这个表是由一个Users表引用的,它有一个ActivityId列(这一列没有标记为外键 - 这是个问题吗?)

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

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

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

回答

2

如果您在Enterprise/Developer版本上,请参阅我的回答here,否则在不重建表的情况下不可能。

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

3

您需要:

  • 添加列具有身份属性,改变你的PK,以包括外地(我强烈建议你做一个ALTER TABLE REBUILD事后清理所有你会从页拆分创建)

  • 指针创建具有所需结构的新表,把你的全部现有数据到它

相关问题